SQL

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の方がいいでしょうね。

ABOUT ME
Nozomu.Kon
トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!