LoginSignup
4
1

More than 3 years have passed since last update.

SQLで条件分岐をさせる(CASE式)

Last updated at Posted at 2019-10-22

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式を使うことによって条件に応じて値を変えることができます。
 読んでくださりありがとうございました!!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1