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

スポンサーリンク

説明

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

ここではその構文を説明します。

 

構文

CASE WHEN 条件1 THEN 値1
WHEN 条件2 THEN 値2
WHEN 条件3 THEN 値3
ELSE 値3 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文字目が'a'だったら'a'を表示する』、

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

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

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

 

PostgreSQLの構文まとめを書いています

入門~経験者まで「基本構文・こんな時どう書くんだっけ?」のまとめ