SQL: 'x is null' と 'x = null' の違いを理解する
SQL には、列の NULL 値をテストする 2 つの異なる方法 (「x は null」と「x = null」) が用意されています。これら 2 つの式は似ていますが、動作は大きく異なります。
「x = null」と「x は null」: 主な違い
式「x = null」は、「x」の値がリテラルの NULL 値と等しいかどうかをチェックする比較演算です。ただし、SQL では、「x = null」を含む NULL 値を含む比較は常に「null」を返します。これは、SQL の NULL 値は未知の値を表すため、他の値と等しいかどうかを判断できないためです。
対照的に、「x is null」は、NULL 値の存在を特にテストする式です。 「x」が NULL の場合は「true」を返し、それ以外の場合は「false」を返します。これにより、「x = null」に関連する曖昧さなしに NULL 値を正確にテストできます。
「x = null」が機能しない理由
前に述べたように、SQL では「x = null」は常に「null」を返します。これは、WHERE 句で使用すると、この場合「null」は false とみなされ、一致する行は生成されないことを意味します。
例
次の形式を考えてみましょう:
X | Y |
---|---|
1 | null |
null | 1 |
クエリ「SELECT * FROM t WHERE x = null」を実行すると、「x」が「null」である行があっても、行は取得されません。これは、「x = null」は常に「null」と評価され、WHERE 句では false になるためです。
正確な NULL 値のテストには「x is null」を使用します
NULL 値を正しくテストするには、「x = null」の代わりに「x is null」を使用します。必要な行を返す例を次に示します:
<code class="language-sql">SELECT * FROM t WHERE x is null</code>
このクエリは次を返します:
X | Y |
---|---|
null | 1 |
結論
「x は null」と「x = null」の違いを理解することは、効果的な SQL プログラミングにとって重要です。 「x = null」は「x」をリテラル NULL 値と比較し、常に「null」を返します。一方、「x is null」は特に NULL 値の存在をテストします。 NULL 値をテストするときは、正確な結果を得るために常に「x is null」を使用してください。
以上がSQL NULL 比較: 「x = NULL」の代わりに「x IS NULL」を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。