我有以下SQL代码
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = nullif(@var, '');
End
这不会输出任何结果。为什么NullIF不起作用?
答案 0 :(得分:2)
使用ISNULL
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = ISNULL(@var, '');
End
更新中...
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = @var OR @var = ''
End
答案 1 :(得分:1)
根据您留下的评论,您的问题有点误导。
我相信你实际上在问为什么下面的陈述不起作用:
SELECT 1 WHERE NULLIF(@var, '') = null
您可以通过执行以下操作来实现此目的:
SET ANSI_NULLS ON
SELECT 1 WHERE NULLIF(@var, '') = null
ANSI_NULLS - 启用时,等于运算符将无效,您必须指定is null
。 OFF时,可以使用equals运算符对空值。
-
这是解决问题的更好方法,因为ANSI_NULL在将来的SQL Server版本中将始终为ON
SELECT 1 WHERE ISNULL(@var, '') = ''
答案 2 :(得分:0)
如果两个表达式不相等,则NULLIF返回第一个表达式。如果表达式是等价的,则为第一个表达式类型的NULLIF returns a null value
。