SQL Case で NULL をチェックする正しい方法は何ですか?
1) ISNULL() の使用
WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....
2) IS NULL の使用
WHEN TABLE.COLUMN IS NOT NULL THEN ....
SQL Case で NULL をチェックする正しい方法は何ですか?
1) ISNULL() の使用
WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....
2) IS NULL の使用
WHEN TABLE.COLUMN IS NOT NULL THEN ....
条件をチェックする場合は常に「is null」を使用し、値を別の値に置き換える場合は isnull(a,b) を使用します。以下を確認してください - http://msdn.microsoft.com/en-us/library/ms184325.aspx
特に最後の行を読んでください!!!
SQLの場合にnull値をチェックしたい場合は、2番目が正しい..
列がNULLかどうかを確認するときは、colISNULLを使用することをお勧めします。
関数を使用する ISNULL(TABLE.COLUMN,0) > 0)
場合、null値は最初にゼロに変換する必要があり、その後、ゼロより大きいすべての値を取る必要があります
この機能は別の場面で役立ちます。すべてのnull値と負の値を返したい場合を考えてみましょう。
したがって、クエリは次のようになります
select * from table where col is null or col<0
これは次のように書き直すことができます
select * from table isnull(col,-1)<0
これは、値をチェックする別の方法でもありNON NULL
ます。
列の長さが 1 より大きいか 1 に等しいかどうかを確認すると、非 NULL 値になります。
declare @emp table
(
fname varchar(50)
);
INSERT into @emp VALUES('vishwanath');
INSERT into @emp VALUES('chetan');
INSERT into @emp VALUES(NULL);
INSERT into @emp VALUES(NULL);
SELECT * FROM @emp
where len(fname)>=1 and fname<>'';
Gives..
fname
--------------------------------------------------
vishwanath
chetan
列の値が 0 より大きいか null の場合、どちらも正しいです。SQL Server での null の奇妙な動作について知りたい場合は、この投稿を参照してください。
どちらも正しいですが、SUM、平均などの計算中にその列で NULL の代わりに定数値を使用する場合は、ISNULL が
役立ちます。たとえば、http://www.w3schools.com/ を確認できます。 sql/sql_isnull.asp
この機能により、私は個人的に ISNULL/COALESCE を計算目的で使用しています。