#SQLにおけるIF文:CASE ~ WHEN
・「単純 CASE 式」と「検索 CASE 式」の2通りの記述方法がある。
・SELECT結果を条件に応じて表示する値を変えたり、条件にあうデータをUPDATEしたり出来る。
##書式
単純CASE式
条件判断の対象列が1つで、「~と等しい」という条件で利用。
CASE 処理対象の列名
WHEN 条件1 THEN 戻り値1
WHEN 条件2 THEN 戻り値2
・・・
ELSE 全条件に一致しないときの戻り値
END
例文1
SELECT name,
price * sold AS "売上高",
CASE
WHEN price * sold >= 5000 THEN '売れ筋商品'
WHEN price * sold >= 3000 THEN '売上良好'
ELSE '売上不調'
END AS "評価"
FROM sales;
●実行結果
NAME 売上高 評価
----------------------------------
みかん 3500 売上良好
バナナ 2000 売上不調
いちご 6000 売れ筋商品
検索CASE式
条件判断の対象が複数の場合や、「=」以外の比較演算子を使いたい場合に利用。
CASE 処理対象の列名
WHEN 列名1 <比較演算子> 条件1 THEN 戻り値1
WHEN 列名2 <比較演算子> 条件2 THEN 戻り値2
・・・・
ELSE 全条件に一致しないときの戻り値
END
例文1
SELECT height, gender
CASE
WHEN height <= 150 THEN '子供'
WHEN height <= 170 THEN '大人'
WHEN gender = 'F' THEN '女'
WHEN gender = 'M' THEN '男'
ELSE 'その他'
END status
FROM family;
●実行結果
HEIGHT GENDER STATUS
145 F 子供
160 M 大人