SQL Server : ISNULL on uniqueidentifier

标签 sql sql-server null 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 的唯一标识符?

最佳答案

我认为下面的表达式可用于检查 GUID 列是否为空

CAST(0x0 AS UNIQUEIDENTIFIER)

类似的东西

...WHERE GuidId <>  CAST(0x0 AS UNIQUEIDENTIFIER)

关于SQL Server : ISNULL on uniqueidentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280994/

相关文章:

php - mysql select查询中逗号分隔值的总和

java - 应用程序的存储过程比 Management Studio 慢

c - 如何创建一个空矩阵并将其显示在屏幕上?

javascript - 两次调用javascript排序函数的不同输出

php - 如何获得最高投票的图像路径

sql - 如何将空值插入sql server

sql - 如何通过某种条件改变光标的select语句?

sql - 根据另一个表中的数字在一个表中插入多行

mysql - 如何创建具有多个引用另一个表的 View

sql - 将 GETDATE 与 DATEDIFF 一起使用?