0

この SQL ステートメントが を返すのはなぜ0ですか?

SELECT CASE WHEN NULL IN (9,1,NULL) THEN 1 ELSE 0 END
4

5 に答える 5

2

一部の RDBMS には処理方法が設定されているため、使用している RDBMS はわかりませんNULL

NULL IN (9, 1, NULL)

次のように書くことができます

(NULL = 9) OR (NULL = 1) OR (NULL = NULL)

そしてそれらのどれTRUEでもありませんでしたFALSE。それらはすべてNULLです。ステートメントには 2 つのパスしかないため、ブロックCASEに該当しELSEます。

于 2013-09-26T12:00:11.000 に答える
0

Null は定義されていないことを意味します。

NUll オブジェクトは他の NULL と等しくありません

NULL==1 は false を返します

NUll==2 は false を返します

NULL==NULL も false を返す

于 2013-09-26T12:02:59.913 に答える
0

NULL特定のサーバーでの処理方法によって異なります。

たとえば、SQL SERVER では、ANSI_NULLS をオフに設定して 1 を返すことができます。

SET ANSI_NULLS OFF

SELECT CASE WHEN NULL IN (9,1,NULL) THEN 1 ELSE 0 END

詳細については、の備考セクションをお読みください。SET ANSI_NULLS

于 2013-09-26T12:00:27.147 に答える