0

我有以下 SQL 代码

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

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

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

4

3 回答 3

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
于 2013-05-25T07:17:23.233 回答
1

根据您留下的评论,您的问题有点误导。

我相信您实际上是在问为什么以下语句不起作用:

SELECT 1 WHERE NULLIF(@var, '') = null

您可以通过执行以下操作来使其工作:

SET ANSI_NULLS ON
SELECT 1 WHERE NULLIF(@var, '') = null

ANSI_NULLS - 当 ON 时,equals 运算符将不起作用,您必须指定is null. 关闭时,您可以对空值使用等号运算符。

--

这是解决问题的更好方法,因为 ANSI_NULLs 在未来的 SQL Server 版本中将始终为 ON

SELECT 1 WHERE ISNULL(@var, '') = ''
于 2013-05-25T07:32:52.963 回答
0

如果两个表达式不等价,则 NULLIF 返回第一个表达式。如果表达式等价,则returns a null value第一个表达式的类型为 NULLIF。

NULLIF

于 2013-05-25T07:16:54.957 回答