【发布时间】:2019-05-02 20:20:20
【问题描述】:
我运行了这个查询:
select
*
from
[dbo].[planservice]
where
cast([serviceid] as varchar(255)) = cast('49D9161A-B92B-E911-8101-001056B242CB' as varchar(255))
我不确定为什么会收到此错误消息:
从字符串转换为唯一标识符时转换失败
难道它们都不会被视为字符串吗?
编辑:这在没有强制转换的情况下确实有效,我的查询不起作用的原因是因为我在 where 子句中包含了这部分:
a.[planid] = ''
删除它后,一切正常。问题是,为什么会有这样的问题?
编辑:我不确定为什么人们将其标记为关闭。它有效,但我不知道它为什么有效。
【问题讨论】:
-
请发布您的表格定义。
-
我为什么要删除我的问题?它有效,但我不明白为什么当我删除 where 子句中的特定部分时它有效?
-
因为空字符串不是有效的唯一标识符。你可能想要
a.[planid] is null -
要给出错误
planid必须是表定义中的唯一标识符,在这种情况下它不能是空字符串。 -
问题的问题是不清楚,没有提供足够的信息并且有矛盾。所以你有一大群沮丧的人,你没有得到你想要的答案,想要帮助的人没有得到他们想要的信息。您需要发布足够的代码让我们能够重现该问题。
标签: sql-server tsql uniqueidentifier