【发布时间】:2015-11-23 16:51:17
【问题描述】:
我试图在WHERE 子句中比较列col1 和变量@myvar。两者通常都包含 GUID,但也可能具有 NULL 值。
我想我可以通过使用WHERE ISNULL(col1, '')=ISNULL(@myvar, '') 来解决NULL=NULL 评估为FALSE 的事实。这将改为比较两个空字符串,并评估为 TRUE。
但是,这将产生以下错误消息:
消息 8169,级别 16,状态 2,行 3 转换时转换失败 从字符串到唯一标识符。
我试过了
DECLARE @myvar uniqueidentifier = NULL
SELECT ISNULL(@myvar,'') as col1
同样的错误信息。
两个问题: 首先,我正在尝试将 uniqueidentifier 变量(即使它具有 NULL 值)转换为(空!)字符串,而不是相反,如错误消息所示。是什么赋予了?
其次,有没有更好的方法来表达我需要的 WHERE 子句,以允许比较可能为 NULL 的唯一标识符?
【问题讨论】:
-
您是否也希望将有效的唯一标识符也转换为字符串?
-
shawnt00,对于 WHERE 子句,非 NULL 唯一标识符不需要转换为字符串。比较它们只需要评估为 TRUE,所以我只检索它们相等的记录。
标签: sql sql-server null uniqueidentifier isnull