SQL Server NULLIF无法按预期工作?

时间:2013-05-25 07:14:21

标签: sql sql-server

我有以下SQL代码

Declare
@var nvarchar(5)
begin
    Set @var = ''

    Select 1 where @var = nullif(@var, '');
End

这不会输出任何结果。为什么NullIF不起作用?

3 个答案:

答案 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

NULLIF