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

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

DDD
DDDオリジナル
2024-12-25 04:52:11341ブラウズ

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 サイトの他の関連記事を参照してください。

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