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

Flo*_*Flo 2 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
Run Code Online (Sandbox Code Playgroud)

问题是,ProspectsInCampaigns中的updatedby字段包含一个空字符串或一个确实是UUID的字符串.在上面的例子中我得到错误:

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

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

JNK*_*JNK 5

不要比较UUIDa float.你为什么这样做呢?

您可以参考这个方便的图表来了解允许的转换.如果无法将两种数据类型相互转换,则无法直接比较它们.

假设您可以将两者都转换为字符串类型,varchar但因为不可能UUID匹配任何可能float没有任何意义的匹配.

编辑:

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

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