【问题标题】:Operand type clash: uniqueidentifier is incompatible with float操作数类型冲突:uniqueidentifier 与 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 与浮动不兼容

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

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

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

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

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

    编辑:

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

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

    【讨论】:

    • 感谢您为我澄清,Ken。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2018-06-28
    • 2015-10-21
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多