1. ホーム
  2. マイスル

[解決済み】MySQL:カラムがNULLの場合の行の選択

2022-03-29 22:22:04

質問

あるカラムにNULLを持つ行を選択しようとすると、空のセットが返される問題があります。しかし、phpMyAdminでテーブルを見ると、ほとんどの行でNULLと表示されています。

私のクエリは次のようなものです。

SELECT pid FROM planets WHERE userid = NULL

毎回空セット。

多くのところが、実際の値ではなく "NULL" や "null" として保存されていないか確認するようにと言い、あるところはスペースだけを探してみるようにと言いました( userid = ' ' ) が、いずれもうまくいきませんでした。MyISAM は null を格納するのが難しいので、MyISAM を使用しないで innoDB を使用するようにという提案もありました。テーブルを innoDB に切り替えたのですが、変換の仕方によって実際にはまだ null でないことが問題になりそうな気がしています。テーブルをinnoDBとして再作成したりすることなく行いたいのですが、もし必要であれば確かに試せますね。

どのように解決するのですか?

SQLのNULLは特殊で、次のような操作をする必要があります。 WHERE field IS NULL NULLは何にも等しくなれないからです。

<ストライク 自分自身を含めて(つまり、NULL = NULLは常に偽)。

参照 Rule 3 https://en.wikipedia.org/wiki/Codd%27s_12_rules