2016-06-13 7 views
2

をチェックする場合、私は名前は「ジョン」ではない場合、それは正常に動作しているSQL Serverの条件NULLは

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

、以下のようなSQL Serverの手続きを書かれています。ただし、NULLの場合は、部分的に実行されません。

これを処理する方法は?等号演算子を使用しますが、SQL Serverの(および他のほとんどのRDBMS)でNULLの値を比較することはできません

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

+3

これはです詳細についてはここをクリックしてください。 https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/ –

答えて

4

1つのオプションは、名前にCOALESECE()を使用することです。代わりに、IS NULLまたはIS NOT NULLを使用する必要があります。 COALESCE()を使用すると、ここでNULLの値を!=との比較のための文字列に変換するトリックです。

0

は単なるnullでない

if @name_belongs_to != 'John' or @name_belongs_to is not null 
begin 
    --doing some operation 
end 
2

を使用これも有効です。

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

このMSDN articleは三値論理がどのように機能するかを説明します。

0

デフォルトでNULLに任意の比較は

ヌル= nullを

偽を返す
偽ヌル= '値が' 偽

ですので、私は以下の使用している

OR @name_belongs_to IS NULL 
0

を追加する必要がありますこの問題を解決するための声明

if isnull(@name_belongs_to,'') != 'John'