我运行了这个查询:
select
*
from
[dbo].[planservice]
where
cast([serviceid] as varchar(255)) = cast('49D9161A-B92B-E911-8101-001056B242CB' as varchar(255))
我不确定为什么收到此错误消息:
从字符串转换为唯一标识符时转换失败
难道它们都不都是字符串吗?
编辑:这在不进行强制转换的情况下仍然有效,我的查询不起作用的原因是因为我之前将此部分包括在我的where子句中:
a.[planid] = ''
一旦我删除了所有内容,一切正常。问题是,为什么会有问题?
编辑:我不确定为什么人们将其标记为已关闭。它有效,但是我不知道为什么会起作用。
答案 0 :(得分:2)
如果您的serviceid
是uniqueidentifier
,那么为什么要将其投射到varchar(255)
?您可以简单地运行
select
*
from
[dbo].[planservice]
where [serviceid] = '49D9161A-B92B-E911-8101-001056B242CB'
这将对uniqueidentifier
很好。