SQL Server:uniqueidentifier上的ISNULL

前端之家收集整理的这篇文章主要介绍了SQL Server:uniqueidentifier上的ISNULL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在WHERE子句中比较列col1和变量@myvar.两者通常都包含GUID,但也可能包含NULL值.
我以为我可以通过使用WHERE ISNULL(col1,”)= ISNULL(@myvar,”)来解决NULL = NULL计算为FALSE的事实.这将比较两个空字符串,并评估为TRUE.

但是,这将产生以下错误消息:

Msg 8169,Level 16,State 2,Line 3 Conversion Failed when converting
from a character string to uniqueidentifier.

我试过了

DECLARE @myvar uniqueidentifier = NULL
SELECT ISNULL(@myvar,'') as col1

相同的错误消息.

两个问题:
首先,我试图将uniqueidentifier变量 – 即使它具有NULL值 – 转换为(空!)字符串,而不是相反,如错误消息所示.是什么赋予了?

第二,有没有更好的方法来说明我需要的WHERE子句,以允许比较可能为NULL的uniqueidentifier?

解决方法

由于您传递的第一个参数isnull不是文字null,它将确定该调用的返回类型,在您的情况下是唯一标识符.第二个参数”,不能转换为这种类型,因此你得到的错误.

解决此问题的一种方法是显式检查空值:

WHERE (@myvar IS NULL AND col1 IS NULL) OR (col1 = @myvar)

猜你在找的MsSQL相关文章