加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server:uniqueidentifier上的ISNULL

发布时间:2020-12-12 06:22:16 所属栏目:MsSql教程 来源:网络整理
导读:我试图在WHERE子句中比较列col1和变量@myvar.两者通常都包含GUID,但也可能包含NULL值. 我以为我可以通过使用WHERE ISNULL(col1,”)= ISNULL(@myvar,”)来解决NULL = NULL计算为FALSE的事实.这将比较两个空字符串,并评估为TRUE. 但是,这将产生以下错误消息: M
我试图在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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读