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の使い方でした。
コメント