SQL CASE式の使い方

SQLのCASE式を使うと、条件によって返す値を分岐させることができる。データベースの種類に依存しない方法で、Oracle、MySQL、PostgreSQLおよびSQLServerで使用できる。

使い方

CASE expr
  WHEN comp THEN return
  [WHEN comp THEN return ...]
  [ELSE return]
END
expr

評価する式

comp

比較する値

return

戻す値

CASE式を使ったSELECT文の例を次に示す。

SELECT
  CASE emp.deptno
    WHEN 1 THEN 'OK'
    WHEN 2 THEN 'OK'
    WHEN 3 THEN 'NG'
    WHEN 4 THEN 'NG'
    ELSE 'UNKNOWN'
  END
FROM emp

複数条件

SQLのCASE式では、複数の条件によって分岐することもできる。

CASE
  WHEN cond THEN return
  [WHEN cond THEN return ...]
  [ELSE return]
END
cond

条件式

return

戻す値

複数条件によって分岐するCASE式の例を次に示す。

SELECT
  CASE
    WHEN emp.deptno = 1 OR emp.deptno = 2 THEN 'OK'
    WHEN emp.deptno = 3 OR emp.deptno = 4 THEN 'NG'
    ELSE 'UNKNOWN'
  END
FROM emp

NULL判定

NULLかどうかを判定するには、IS を使う。

SELECT
  CASE
    WHEN comm IS NULL THEN 0
    WHEN comm IS NOT NULL THEN comm
  END
FROM emp

ELSEの省略

CASE式のELSE句を省略すると、「ELSE NULL」と同じ扱いになる。