サイトアイコン こじりふぁ

SQLでIF文は使えない

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