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] = ''
删除它后,一切正常。问题是,为什么这是个问题?
编辑:我不确定为什么人们将其标记为关闭。它有效,但我不知道它为什么有效。
如果您的 serviceid
是 uniqueidentifier
那么您为什么要将其转换为 varchar(255)
?你可以简单地 运行
select
*
from
[dbo].[planservice]
where [serviceid] = '49D9161A-B92B-E911-8101-001056B242CB'
这适用于 uniqueidentifier
。
我运行这个查询:
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] = ''
删除它后,一切正常。问题是,为什么这是个问题?
编辑:我不确定为什么人们将其标记为关闭。它有效,但我不知道它为什么有效。
如果您的 serviceid
是 uniqueidentifier
那么您为什么要将其转换为 varchar(255)
?你可以简单地 运行
select
*
from
[dbo].[planservice]
where [serviceid] = '49D9161A-B92B-E911-8101-001056B242CB'
这适用于 uniqueidentifier
。