SQL文でIF文を使いたいと思う場合があると思います。PL/SQLであればIF文を使うことはできますが、ただのSQLではIF文は使えません。
SQLでIF文の様な分岐を表現したい場合はDECODE、またはCASEを使うのが一般的です。DECODE及びCASEのサンプルSQLを紹介します。
DECODEを使ってIF文を表現するサンプルSQL
SELECT SYOHIN_CD AS 商品コード ,DECODE(SYOHIN_CD, '01', 'お茶' ,'02' ,'水', 'その他' ) AS 商品名 FROM TB_SAMPLE ; 商品コード 商品名 ---------- ------------------ 01 お茶 02 水 99 その他
CASEを使ってIF文を表現するサンプルSQL
SELECT SYOHIN_CD AS 商品コード ,CASE SYOHIN_CD WHEN '01' THEN 'お茶' WHEN '02' THEN '水' ELSE 'その他' END AS 商品名 FROM TB_SAMPLE ; 商品コード 商品名 ---------- ------------------ 01 お茶 02 水 99 その他
CASEで四則演算子を使ってIF文を表現するサンプルSQL
SELECT SYOHIN_CD AS 商品コード ,CASE WHEN SYOHIN_CD = '01' THEN 'お茶' WHEN SYOHIN_CD >= '02' AND SYOHIN_CD <= '02' THEN '水' ELSE 'その他' END AS 商品名 FROM TB_SAMPLE ; 商品コード 商品名 ---------- ------------------ 01 お茶 02 水 99 その他