SQL 服务器:在 Where 子句中使用唯一标识符

SQL Server : using unique identifier in Where clause

我运行这个查询:

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

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

Conversion failed when converting from a character string to a uniqueidentifier

它们不会都被认为是字符串吗?

编辑:这在没有转换的情况下确实有效,我的查询无效的原因是因为我之前将这部分包含在我的 where 子句中:

a.[planid] = ''

删除它后,一切正常。问题是,为什么这是个问题?

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

如果您的 serviceiduniqueidentifier 那么您为什么要将其转换为 varchar(255)?你可以简单地 运行

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

这适用于 uniqueidentifier