0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【MySQL】NULLの取り扱いについて

Last updated at Posted at 2022-02-23

MySQLでハマった。
NULLは極力使わないほうが良いのではないかとも思っている。
一連の経験について記しておき、誰かの役に立てれば幸いです。

概要

「!=」ではNULLを拾わない。。。

どういうことか?

あるカラムに、「Null」「1」「5」「10」が入っていたとしよう。 そこでこのカラムの値が1以外のものを抽出しようとする。
SELECT * FROM (テーブル名) WHERE (カラム名) != 1;
これで行けると思われる。 しかし、結果として「5」「10」は抽出できるが、「Null」は抽出できない。

詳細

SELECT分を実行し、1レコードずつ見ていくとき、
WHERE (カラム名) != 1
の(カラム名)に各値が入っていく。つまり、

WHERE (カラム名) != 1
 ↓
WHERE 5 != 1
 ↓
true

という動きとなるが、nullだった時

WHERE (カラム名) != 1
 ↓
WHERE null != 1
 ↓
false

となる。よってSELECT文でnullが入っているレコードを抽出できない。
カウントしたいときとかに正確な数字を出すことができないので注意。

まだまだ駆け出しの身なので、上記SQL文がそもそも間違っている、とか よりよいSQLはこうだ、みたいなご意見あればコメントいただけますと幸いです。

また、結果としてこうなる経験をしたが、なぜこのような動きとなるのかはわからない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?