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 その他
