
SQLでISNULL()が使えない…?
SQLではnullチェックにISNULL()関数をよく利用しますが、このISNULL()を利用するとillegal tokenと怒られてしまいました。
普段業務でよく利用するのはSQL Server2012なので問題なかったのですが、illegal tokenで怒られてしまうのはSQL Server Compact Edition 4.0を利用したシステムだったからでした…
SQL Server Compact EditionにはISNULL()関数は含まれていないのを忘れていました。早速、代替できる関数COALESCE()を利用しました。
SELECT ISNULL(MAX(age), 0) max_age from tblEmployee
SELECT COALESCE(MAX(age), 0) max_age from tblEmployee
case when文を利用してもいいのですが、null評価という意味ではちょっと雑多な感じがしますね。
SELECT (CASE WHEN MAX(age) IS NULL TEHN 0 ELSE MAX(age) END) max_age from tblEmployee
COALESCE()はNULLではない最初の値を返すので、本ケースではCOALESCE()の方がよさそうです。
個別の値を評価するにはCASE WHENの方がいいでしょうね。
この記事へのコメントはありません。