No.124


【MySQL】【CakePHP】NULLの値を扱う制御関数

MySQLのNULL値制御関数をCakePHPで使用したい

 MySQLでNULL値を制御してくれる関数にIFNULLCOALESCEがある。

 これをCakePHPの検索条件に使いたい場合、どうしたらいいかと言うと…


CaePHPのconditionsへの記載方法

 そのまま書けばいい(ズコー

'conditions' => array(
    'IFNULL(Model.column1, 0) >' => 0,
    'COALESCE(Model.column2, Model.column3, 0) >' => 0,

 エスケープされておかしくなることもないので気にせずガンガン書きまくろう。


参考

 よく聞かれるのでコピペ用にIFNULLCOALESCEの使い方をメモ。


IFNULL

 第一引数の値がNULLだったら第二引数の値を返す。NULL以外は第一引数の値をそのまま返す。

IFNULL(値1, 値2)
IFNULL(4, 0) = 4
IFNULL(null, 0) = 0

COALESCE

 引数の先頭からNULL以外の値を探しその値を返す。全部の引数がNULLだったらNULLを返す。
 引数の数は任意。

COALESCE(値1, 値2, ....)
COALESCE(4, null, 0) = 4
COALESCE(null, 2, 0) = 2
COALESCE(null, null, 0) = 0
COALESCE(null, null, null) = null