【PostgreSQL】Case文(複数条件分岐、Case When)

PostgreSQL構文

説明

SELECT文で条件分岐をするにはCase文を使います。

ここではその構文と使用例を紹介します。

 

構文

CASE WHEN 条件1 THEN 値1
WHEN 条件2 THEN 値2
WHEN 条件3 THEN 値3
ELSE 値4 END AS 列名   --『AS 列名』は、あってもなくても可です。(ENDまでは必ず必要)
『WHEN 条件 THEN 値』をつなげていけばいくつでも条件を設定することができます。

 

 

 

 

使用例

次の例は「pg_table」のtablenameに対しcase文を使った例になります。

※そのまま実行できるので、コピーで実行し確認してみて下さい。

select 
    tablename,
    case when substring(tablename,5,1)= 'f' then 'a' -- (1)
    when substring(tablename,5,1)= 'p' then 'b'      -- (2)
    else 'c' end as flg                              -- (3)
from pg_tables
where schemaname != 'pg_catalog' order by tablename;

 

上の文の意味は、(1)の行で『tableの5文字目が'f'だったら'a'を表示する』、

(2)の行で『tableの5文字目が'p'だったら'b'を表示する』、

(3)の行で『(1)、(2)に合致しなければ'c'を表示する』としています。

またasを使っているので『これらの条件で表示する列名をflgとする』と書いています。