読者です 読者をやめる 読者になる 読者になる

blogですかい

株式会社Loco Partnersに勤めるエンジニアうちの一人のブログ。仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

【SQL】 NULLを四則演算した結果

SQLで数値とNULLを四則演算すると、NULLになります。
例えば NULL+1 をやってみると

mysql> SELECT NULL+1;
+--------+
| NULL+1 |
+--------+
|   NULL |
+--------+
1 row in set (0.01 sec)

ってな感じ。
その仕様を忘れている時があって(というか、NULL値をとりうるフィールドをそのまま演算に使おうとして)ハマる事がたまにあります。

ちなみに、NULLを0として扱いたい時ってままあると思うのですが、そういう時はどうすれば良いかというと、

mysql> SELECT COALESCE(NULL,0)+1;
+--------------------+
| COALESCE(NULL,0)+1 |
+--------------------+
|                  1 |
+--------------------+
1 row in set (0.00 sec)

このように、COALESCE()関数を使えば、NULLをナニカシラの値に変換することができます。