【SQL Server】IIF で値を評価する

SQL ServerでIF文を一つにまとめたIIFがSQL Server 2012から使用できるようになりました。評価の結果に基づいて、他の2つの引数のいずれかを返します。ACCESS VBA、VBでおなじみの関数です。

IIF

構文

IIF(式, Trueの戻り値, Falsの戻り値)

IIFの第1パラメータの式がtrueであれば、第2パラメータを戻し、falseであれば第3パラメータを戻します。

IIFの使用例

--IIFでscoreが70以上であれば合格、未満は不合格とする
SELECT score,IIF(score >= 70, '合格', '不合格') res FROM table1;
score res
90 合格
60 不合格

ここではIIFをつかって「score」が70点以上であれば合格、70未満は不合格という文字列をかえすSELECTを作成しました。

CASEの使用例

IIFはSQL Server独自ですが、他のOracleやmySQLなどのデータベースと共通で使うならCASEになります。

--CASEでscoreが70以上であれば合格、未満は不合格とする
SELECT CASE WHEN score >= 70 THEN '合格' ELSE '不合格' END 
FROM table1;
score res
90 合格
60 不合格

ここではCASEをつかってscoreが70点以上であれば合格、70未満は不合格という文字列をかえすSELECTを作成しました。

IIFの方が記述としては簡単に書くことができます。他のDBと汎用性をもたせるのであればCASEの方が妥当ですね。

参照:IIF (Transact-SQL) – MSDN – Microsoft

以上、SQL ServerのIIFの使い方でした。

コメント