ホームページ >データベース >mysql チュートリアル >MySQL IN 演算子と Null 値: Null エラーのある行が除外されるのはなぜですか?

MySQL IN 演算子と Null 値: Null エラーのある行が除外されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-23 17:43:02800ブラウズ

MySQL IN Operator and Null Values: Why Are Rows with Null Errors Excluded?

MySQL IN 演算子と Null 値

MySQL では、IN 演算子は、指定された値が指定された値内のいずれかの値と一致するかどうかを確認するために使用されます。リスト。ただし、NULL 値で IN 演算子を使用すると、予期しない動作が発生する可能性があります。

NULL 値が除外される理由

MySQL IN 演算子はブール値の結果 (TRUE または間違い)。 null 以外の値を null と比較すると、結果は常に FALSE になります。したがって、IN を使用して値が null を含むリスト内のどの値とも等しくないことをチェックする場合、null 値を持つすべての行が結果から除外されます。

問題の修正

結果に null 値を含めるには、次のオプションを使用できます:

  1. COALESCE 関数: COALESCE 関数は、null 値を指定されたデフォルト値に置き換えることができます。 。この関数を使用すると、クエリを次のように変更できます:
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
  1. OR 演算子: OR 演算子を使用して、特定のエラー コードと null エラー値の欠如。したがって、クエリは次のように書き換えることができます:
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
  1. CASE ステートメント: CASE ステートメントを使用すると、複数の条件を評価し、以下に基づいて特定の値を返すことができます。結果。この場合、これを使用して、NULL 以外のエラーがある行に対して TRUE を返すブール式を作成できます。クエリは次のように変更できます:
CASE WHEN Error IS NULL THEN 1
ELSE Error NOT IN ('Timeout','Connection Error') THEN 1
END = 1
  1. JOIN サブクエリ: JOIN サブクエリを使用すると、複数のテーブルからデータを取得し、結果に基づいて結果を結合できます。よくある状態。このメソッドにより、NULL エラーのある行が除外されないようにできます。
SELECT t1.*
FROM Table1 t1
LEFT JOIN (
    SELECT Error
    FROM ErrorTable
    WHERE Error IN ('Timeout')
) t2 ON t1.Error = t2.Error;

結論

NULL 値で IN 演算子を使用する場合、次のことが重要です。演算子が null を特別な値として扱うことを理解するためです。結果に null 値を含めるには、上記のような追加の条件または手法を使用する必要があります。

以上がMySQL IN 演算子と Null 値: Null エラーのある行が除外されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。