MySQL IN 演算子と Null 値: Null エラーのある行が除外されるのはなぜですか?
Oct 23, 2024 pm 05:43 PMMySQL IN 演算子と Null 値
MySQL では、IN 演算子は、指定された値が指定された値内のいずれかの値と一致するかどうかを確認するために使用されます。リスト。ただし、NULL 値で IN 演算子を使用すると、予期しない動作が発生する可能性があります。
NULL 値が除外される理由
MySQL IN 演算子はブール値の結果 (TRUE または間違い)。 null 以外の値を null と比較すると、結果は常に FALSE になります。したがって、IN を使用して値が null を含むリスト内のどの値とも等しくないことをチェックする場合、null 値を持つすべての行が結果から除外されます。
問題の修正
結果に null 値を含めるには、次のオプションを使用できます:
- COALESCE 関数: COALESCE 関数は、null 値を指定されたデフォルト値に置き換えることができます。 。この関数を使用すると、クエリを次のように変更できます:
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
- OR 演算子: OR 演算子を使用して、特定のエラー コードと null エラー値の欠如。したがって、クエリは次のように書き換えることができます:
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
- CASE ステートメント: CASE ステートメントを使用すると、複数の条件を評価し、以下に基づいて特定の値を返すことができます。結果。この場合、これを使用して、NULL 以外のエラーがある行に対して TRUE を返すブール式を作成できます。クエリは次のように変更できます:
CASE WHEN Error IS NULL THEN 1 ELSE Error NOT IN ('Timeout','Connection Error') THEN 1 END = 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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
