Help us understand the problem. What is going on with this article?

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした