CASE式とは
SQLの中で条件分岐をさせたい場合に使うものがCASE式です。プログラミングのif文やswitch文のようなことができます。ただし、CASE式は「式」なので結果は必ず単純な「値」になります。例えば、「1」や「'A'」のようになります。
CASE式の使い方
CASE式には単純CASE式と検索CASE式の2種類あります。いずれも似たようなことができます。
以下に簡単な例を示します。
単純CASE式
単純CASE式の書式は以下のようになります。以下の場合は、式1が式2と等しいならば式3となり、式1が式4と等しいならば式5となり、式1が式2と式4のいずれとも等しくない場合式10となるという意味です。
・書き方
CASE 式1
WHEN 式2 THEN 式3
WHEN 式4 THEN 式5
ELSE 式10
END
・具体例
もしnameが'apple'ならば'A'となり、nameが'orange'ならば'B'となり、nameが他のものなら'C'となるCASE式は以下のようになります。
CASE name
WHEN 'apple' THEN 'A'
WHEN 'orange THEN 'B'
ELSE 'C'
END
検索CASE式
検索CASE式の書式は以下のようになります。以下の場合は、条件式1が真(true)ならば式1となり、条件式2が真ならば式2となり、いずれも偽(false)の場合式10となるという意味です。
・書き方
CASE
WHEN 条件式1 THEN 式1
WHEN 条件式2 THEN 式2
ELSE 式10
END
・具体例
もしnameが'apple'ならば'A'となり、nameが'orange'ならば'B'となり、nameが他のものなら'C'となるCASE式は以下のようになります。
CASE
WHEN name = 'apple' THEN 'A'
WHEN name = 'orange THEN 'B'
ELSE 'C'
END
実行例(検索CASE式)
次のfruitsテーブルを使用します。
postgres=# SELECT * FROM fruits;
name
--------
apple
orange
banana
(3 rows)
CASE式を使用します。
postgres=# SELECT name,
postgres-# CASE
postgres-# WHEN name = 'apple' THEN 'A'
postgres-# WHEN name = 'orange' THEN 'B'
postgres-# ELSE 'C'
postgres-# END AS class
postgres-# FROM fruits;
name | class
--------+-------
apple | A
orange | B
banana | C
(3 rows)
まとめ
CASE式を使うことによって条件に応じて値を変えることができます。
読んでくださりありがとうございました!!