操作数类型冲突:uniqueidentifier 与 float 不兼容

Posted

技术标签:

【中文标题】操作数类型冲突:uniqueidentifier 与 float 不兼容【英文标题】:Operand type ***: uniqueidentifier is incompatible with float 【发布时间】:2011-06-29 22:48:43 【问题描述】:

我有以下 SQL 语句:

select pc.*,au.UserName from ProspectsInCampaigns pc 
inner join prospects p on p.id=pc.prospectid 
inner join aspnet_Users au on STR(au.UserId)=pc.updatedby
WHERE p.id=1225982

问题是,ProspectsInCampaigns 中的 updatedby 字段要么包含一个空字符串,要么包含一个确实是 UUID 的字符串。 在上述情况下,我收到错误:

操作数类型冲突:uniqueidentifier 与浮动不兼容

我怎样才能防止这种情况发生?

【问题讨论】:

【参考方案1】:

不要将UUIDfloat 进行比较。你为什么要这样做?

You can consult this handy chart 了解允许进行哪些转换。如果不能将两种数据类型相互转换,就不能直接比较。

假设您可以将两者都转换为varchar 之类的字符串类型,但由于不可能让UUID 匹配任何可以是float 的东西,所以没有意义。

编辑:

更具体地说,Userid 看起来像是一个UUID,而STR() 函数专门用于将float 数据转换为字符串数据类型。

你为什么要转换 au.UserID 呢?如果您有 UUID,请直接将其与其他 UUID 进行比较。

【讨论】:

感谢您为我澄清,Ken。

以上是关于操作数类型冲突:uniqueidentifier 与 float 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL Server 的 uniqueidentifier 字段类型

UniqueIdentifier 数据类型 和 GUID 生成函数

UniqueIdentifier 数据类型 和 GUID 生成函数

允许同一个表的多个左外连接?

数据类型 varchar 和 uniqueidentifier 在 add 运算符中不兼容

使用laravel从sql server生成UUID数据类型(uniqueidentifier)失败