今のプロジェクトで使ったのでメモ 現在API担当としてシステム開発を行なっているのですが、返却値として「NULL」を 返却せずに「0」を返却して欲しいという要望があったので、 クエリで何とかならないかと思ってCOALESCE関数という関数を見つけました。 関数の内容としてはリストの最初の非 NULL 値を戻すか、非 NULL 値がない場合は NULL を戻します。と言うことが書いてありました。 翻訳がアレなのでちょっとわかりにくいと思います。 つまり、引数は可変長引数となっており、いくつでも(?)引数を指定することが可能です。 その上で、順番に指定されている引数をチェックしていき、「NULL」でない値を返却します。 「NULL」しか無かった場合は「NULL」を返却します。 例)mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL例えば下記のようなテーブルがあったとします。+---------+--------+-------+ | user_id | name | value | +---------+--------+-------+ | 1 | user01 | 5 | | 2 | user02 | NULL | +---------+--------+-------+上記のテーブルを次のSELECTで取得した場合SELECT * FROM `user`+---------+--------+-------+ | user_id | name | value | +---------+--------+-------+ | 1 | user01 | 5 | | 2 | user02 | NULL | +---------+--------+-------+「value」カラムにNULLが入ったまま返却されてきます。 次に上記のCOALESCE関数を使用してSELECTを実行します。SELECT `user`.`user_id`, `user`.`name`, COALESCE(`user`.`value`, 0) AS `value` FROM `user`+---------+--------+-------+ | user_id | name | value | +---------+--------+-------+ | 1 | user01 | 5 | | 2 | user02 | 0 | +---------+--------+-------+という風に先程「NULL」が入っていたところが「0」として返却されてきます。 本来このような使い方をする関数では無いのかもしれないですが、この関数のお陰で 楽ができました。 終わり
2012/04/21
【MySQL】SELECTで取得した値がNULL値だった場合に別の値として取得する
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿