SQL Server:在Where子句中使用唯一标识符

时间:2019-05-02 20:20:21

标签: sql-server tsql uniqueidentifier

我运行了这个查询:

select
    *
from
    [dbo].[planservice]
where
    cast([serviceid] as varchar(255)) = cast('49D9161A-B92B-E911-8101-001056B242CB' as varchar(255))

我不确定为什么收到此错误消息:

  

从字符串转换为唯一标识符时转换失败

难道它们都不都是字符串吗?

编辑:这在不进行强制转换的情况下仍然有效,我的查询不起作用的原因是因为我之前将此部分包括在我的where子句中:

a.[planid] = ''

一旦我删除了所有内容,一切正常。问题是,为什么会有问题?

编辑:我不确定为什么人们将其标记为已关闭。它有效,但是我不知道为什么会起作用。

1 个答案:

答案 0 :(得分:2)

如果您的serviceiduniqueidentifier,那么为什么要将其投射到varchar(255)?您可以简单地运行

select
*
from
[dbo].[planservice]
where [serviceid] = '49D9161A-B92B-E911-8101-001056B242CB' 

这将对uniqueidentifier很好。