我编写了如下的SQL Server程序,
if @name_belongs_to != 'John'
begin
--doing some operation
end
如果名称不是' John',它工作正常。但是,如果它为NULL,则不执行part。
如何处理?
答案 0 :(得分:4)
一种选择是在名称上使用COALESECE()
:
if coalesce(@name_belongs_to, '') != 'John'
begin
--doing some operation
end
您无法使用equals运算符比较SQL Server(和大多数其他RDBMS)中的NULL
值。相反,您需要使用IS NULL
或IS NOT NULL
。使用COALESCE()
此处是一种技巧,可将NULL
值转换为字符串,以便与!=
进行比较。
答案 1 :(得分:2)
这也是有效的:
if @name_belongs_to != 'John' OR @name_belongs_to IS NULL
begin
--doing some operation
end
这个MSDN article解释了三值逻辑的工作原理。
答案 2 :(得分:0)
只是使用不是空
if @name_belongs_to != 'John' or @name_belongs_to is not null
begin
--doing some operation
end
答案 3 :(得分:0)
默认情况下,任何与null的比较都会返回false
null = null是假的 null ='value'为false
所以你需要添加
OR @name_belongs_to IS NULL
答案 4 :(得分:0)
我使用以下声明来解决我的问题,
if isnull(@name_belongs_to,'') != 'John'