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

时间:2011-06-29 22:48:43

标签: sql sql-server-2008

我有以下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   与float

不兼容

如何防止这种情况发生?

1 个答案:

答案 0 :(得分:5)

请勿将UUIDfloat进行比较。你为什么这样做呢?

You can consult this handy chart了解允许的转化次数。如果无法将两种数据类型相互转换,则无法直接比较它们。

假设您可以将两者转换为类似varchar的字符串类型,但由于无法使UUID匹配任何可能是float的内容,因此没有任何意义。

修改

更具体地说,看起来UseridUUIDSTR()函数专门用于将float数据转换为字符串数据类型。

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