操作数类型冲突: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】:不要将UUID
与float
进行比较。你为什么要这样做?
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 生成函数