end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

null値との四則演算結果は必ずnullなので、coalesce()で0に変換

null値との四則演算結果は必ずnull

MySQL のNULL ではまったことあれこれ - Slow Dance
http://dev.mysql.com/doc/refman/5.1/ja/problems-with-null.html
↑この辺りに分かりやすく記載されていますが、null値との四則演算結果は必ずnull。
誰もが一度は引っ掛る所で、私は1回/年の頻度で引っ掛ります。

mysql> select null+1;
+--------+
| null+1 |
+--------+
|   NULL |
+--------+
1 row in set (0.00 sec)

mysql> select null*1;
+--------+
| null*1 |
+--------+
|   NULL |
+--------+
1 row in set (0.00 sec)

coalesce()で0に変換できます

http://dev.mysql.com/doc/refman/5.1/ja/comparison-operators.html
null値を0として演算したい場合、coalesce()で0に変換できます。

例えば、先程のnull値を返された和と積の演算は、次のように書けます。

mysql> select coalesce(null,0)+1;
+--------------------+
| coalesce(null,0)+1 |
+--------------------+
|                  1 |
+--------------------+
1 row in set (0.00 sec)

mysql> select coalesce(null,0)*1;
+--------------------+
| coalesce(null,0)*1 |
+--------------------+
|                  0 |
+--------------------+
1 row in set (0.00 sec)

coalesce()って、何て読むの?

読めないことをあまり気にしていませんが