2011年9月4日日曜日

(SQL Server)CASE 式 (IIf の代用としても)

SQL Server で条件評価を行う式です。Access IIf の代用としても使えます。

Access IIf の代用
IIf(fieldABC='A','Aです','Aではありません')

--この IIf を CASE に置き換える
CASE fieldABC WHEN 'A' THEN 'Aです' ELSE 'Aではありません' END
--または
CASE WHEN fieldABC = 'A' THEN 'Aです' ELSE 'Aではありません' END

--NULL 判定は
CASE WHEN fieldABC IS NULL THEN 'NULLです' ELSE 'NULLではありません' END
--CASE式とは関係ありませんが ISNULL という便利な関数もあります
ISNULL(fieldABC, 'NULLです')

単純 CASE 式
SELECT
 CASE fieldABC
  WHEN 'A' THEN 'Aです'
  WHEN 'AB' THEN 'ABです'
  ELSE '見つかりませんでした' -- 省略可能,省略時は NULL が返る
 END

検索 CASE 式
SELECT
 CASE
  WHEN fieldN < 100 THEN '100未満'
  WHEN fieldN >= 100 AND fieldN < 1000 THEN '100以上1000未満'
  ELSE '1000以上' -- 省略可能,省略時は NULL が返る
 END

■環境
OS:Microsoft Windows XP Home Edition 日本語 ServicePack 3
DB:Microsoft SQL Server 2005 Express Edition Service Pack 2 (9.00.3080.00)
DB管理ツール:Microsoft SQL Server Management Studio Express (9.00.3042.00)

■関連投稿
SQL Server での切り捨て
SQL Server での四捨五入