我有以下 SQL 代码
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = nullif(@var, '');
End
这不会输出任何结果。为什么 NullIF 不起作用?
我有以下 SQL 代码
Declare
@var nvarchar(5)
begin
Set @var = ''
Select 1 where @var = nullif(@var, '');
End
这不会输出任何结果。为什么 NullIF 不起作用?
利用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
根据您留下的评论,您的问题有点误导。
我相信您实际上是在问为什么以下语句不起作用:
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, '') = ''
如果两个表达式不等价,则 NULLIF 返回第一个表达式。如果表达式等价,则returns a null value
第一个表达式的类型为 NULLIF。