MySQLでハマった。
NULLは極力使わないほうが良いのではないかとも思っている。
一連の経験について記しておき、誰かの役に立てれば幸いです。
概要
「!=」ではNULLを拾わない。。。どういうことか?
あるカラムに、「Null」「1」「5」「10」が入っていたとしよう。 そこでこのカラムの値が1以外のものを抽出しようとする。SELECT * FROM (テーブル名) WHERE (カラム名) != 1;
詳細
SELECT分を実行し、1レコードずつ見ていくとき、WHERE (カラム名) != 1
WHERE (カラム名) != 1
↓
WHERE 5 != 1
↓
true
という動きとなるが、nullだった時
WHERE (カラム名) != 1
↓
WHERE null != 1
↓
false
となる。よってSELECT文でnullが入っているレコードを抽出できない。
カウントしたいときとかに正確な数字を出すことができないので注意。
また、結果としてこうなる経験をしたが、なぜこのような動きとなるのかはわからない。