我有以下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
不兼容
如何防止这种情况发生?
答案 0 :(得分:5)
请勿将UUID
与float
进行比较。你为什么这样做呢?
You can consult this handy chart了解允许的转化次数。如果无法将两种数据类型相互转换,则无法直接比较它们。
假设您可以将两者转换为类似varchar
的字符串类型,但由于无法使UUID
匹配任何可能是float
的内容,因此没有任何意义。
修改强>
更具体地说,看起来Userid
是UUID
,STR()
函数专门用于将float
数据转换为字符串数据类型。
为什么要尝试转换au.UserID呢?如果您有UUID,请直接将其与其他UUID进行比较。