SQL Server如果条件为NULL检查

时间:2016-06-13 07:56:26

标签: sql-server stored-procedures

我编写了如下的SQL Server程序,

if @name_belongs_to != 'John'
begin
  --doing some operation
end

如果名称不是' John',它工作正常。但是,如果它为NULL,则不执行part。

如何处理?

5 个答案:

答案 0 :(得分:4)

一种选择是在名称上使用COALESECE()

if coalesce(@name_belongs_to, '') != 'John'
begin
  --doing some operation
end

您无法使用equals运算符比较SQL Server(和大多数其他RDBMS)中的NULL值。相反,您需要使用IS NULLIS 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'