2

SQL Case で NULL をチェックする正しい方法は何ですか?

1) ISNULL() の使用

WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....

2) IS NULL の使用

WHEN TABLE.COLUMN IS NOT NULL THEN ....
4

6 に答える 6

1

条件をチェックする場合は常に「is null」を使用し、値を別の値に置き換える場合は isnull(a,b) を使用します。以下を確認してください - http://msdn.microsoft.com/en-us/library/ms184325.aspx

特に最後の行を読んでください!!!

于 2012-07-23T09:59:50.790 に答える
1

SQLの場合にnull値をチェックしたい場合は、2番目が正しい..

于 2012-07-23T06:57:59.723 に答える
0

列が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
于 2012-07-23T09:01:30.777 に答える
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
于 2012-07-23T07:05:19.250 に答える
0

列の値が 0 より大きいか null の場合、どちらも正しいです。SQL Server での null の奇妙な動作について知りたい場合は、この投稿を参照してください。

于 2012-07-23T07:11:15.393 に答える
0

どちらも正しいですが、SUM、平均などの計算中にその列で NULL の代わりに定数値を使用する場合は、ISNULL が
役立ちます。たとえば、http://www.w3schools.com/ を確認できます。 sql/sql_isnull.asp

この機能により、私は個人的に ISNULL/COALESCE を計算目的で使用しています。

于 2012-07-23T09:33:05.333 に答える