ホームページ > データベース > mysql チュートリアル > MySQL で NULL 値を含む行を効果的に取得するにはどうすればよいですか?

MySQL で NULL 値を含む行を効果的に取得するにはどうすればよいですか?

DDD
リリース: 2024-12-25 04:52:11
オリジナル
331 人が閲覧しました

How Can I Effectively Retrieve Rows with NULL Values in MySQL?

MySQL の Null 値について

MySQL では、標準の比較演算子 (=) を使用して Null 値を含む行を取得するのが難しい場合があります。この異常は、SQL の null 値の固有の性質に起因します。

Null 値を取得するという課題

これを例で説明してみましょう:

SELECT pid FROM planets WHERE userid = NULL
ログイン後にコピー

このクエリuserid 列が NULL 値を持つ行を返すことが期待されます。ただし、多くの場合、(phpMyAdmin で確認したように) テーブルにデータが存在しているにもかかわらず、空のセットが返されます。

問題の原因

この問題は、 SQL は他の値とは異なります。 Codd の 12 のルールの 1 つによると、null は、それ自体を含め、他の値と等しくなりません。したがって、= 演算子を使用して列を NULL と比較すると、常に false が返されます。

解決策: IS NULL 演算子

NULL 値を持つ行を正常に取得するには、IS NULL 演算子を使用する必要があります。 :

SELECT pid FROM planets WHERE userid IS NULL
ログイン後にコピー

IS NULL を使用すると、= を使用して列を NULL と比較するのではなく、列が本当に null であるかどうかを検査します。演算子。

その他の考慮事項

  • 列が実際に null であり、「NULL」または末尾にスペースのある「null」として格納されていないことを確認してください。
  • Check ifテーブル エンジンは MyISAM であるため、null 処理で問題が発生する可能性があります。 InnoDB に移行すると、この問題を解決できます。

ただし、テーブル構造やエンジンの変更に頼る前に、他のオプションをすべて検討することが重要です。

以上がMySQL で NULL 値を含む行を効果的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート