それは物ではなく、実際には物の不在であるNULL
ため、等しいことも等しくないこともありません。NULL
ANSI SQL 1999 (ただし、まだ MSSQL ではありません) には、期待される結果IS [NOT] DISTINCT FROM
で使用できるメソッドが含まれています。NULL
IS DISTINCT FROM と IS NOT DISTINCT FROM を書き換えるには?
これは、 Itzik Ben-Gan による、一般的IS DISTINCT FROM
な動作と紛らわしい性質に関する優れた投稿です。NULL
http://sqlmag.com/sql-server/not-distinct
述語は、TRUE、FALSE、または UNKNOWN に評価できます。述語は、NULL が含まれる場合は常に UNKNOWN と評価されます。
Erland Sommarskog はそれを望んでいます。
http://www.sommarskog.se/wishlist.html#isdistinctfrom
SQL:1999 では、演算子 IS DISTINCT FROM および IS NOT DISTINCT FROM が定義されています。これらは、NULL 値にも適用されることを除いて、それぞれ <> および = と同じです。
(Erland から) MVP の Steve Kass がこの機能をリクエストしている Connect のリンクは次のとおりです。
http://connect.microsoft.com/SQLServer/feedback/details/286422/add-language-and-optimizer-support-for-iso-distinct-predicate
これは一般的な要件ですが、多くの列に対してこれをコーディングするのは面倒で、エラーが発生しやすくなります (特に AND/OR の優先順位の問題のため)。ANSI_NULLS の設定を変更することは解決策ではありません。列と列の比較には影響せず、列と変数の比較にのみ影響するためです。ANSI_NULLS を off に設定することも非標準であり、単一のクエリで特定の比較に適用するには十分な粒度ではありません。