0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【sql】case式の使い方を実際に動かして理解する

Last updated at Posted at 2021-06-08

はじめに

case式を利用するとsql内でカラムの条件分岐を行えるらしい。

今回はsqlのcase式の学習のためにpostgresのコンテナ環境を利用して実際に実行し、理解を深める。

前準備

postgresテスト環境の構築

# postgresコンテナ環境を起動
$ docker run -i --rm -d\
    --name psql_test \
    -p 15433:5432 \
    -v postgres-tmp:/var/lib/postgresql/data \
    -e POSTGRES_HOST_AUTH_METHOD=trust \
    postgres:13.3-alpine
## postgresコンテナにログイン
$ docker exec -it psql_test sh

テストデータの投入

CREATE DATABASE test_local;

\c test_local;

CREATE TABLE PERSON(
    name varchar(20),
    age integer
);

INSERT INTO PERSON VALUES ('a', 20);
INSERT INTO PERSON VALUES ('b', 10);
INSERT INTO PERSON VALUES ('c', 15);
INSERT INTO PERSON VALUES ('d', 30);
INSERT INTO PERSON VALUES ('e', 40);
-- データ確認
select * from person;

test_local=# select * from person;
-- 結果
 a    |  20
 b    |  10
 c    |  15
 d    |  30
 e    |  40

実験

case式はプログラミングで言うif文ようなもの。
書式は以下の通り

CASE WHEN [条件式1] THEN [条件式1が正のときの処理] ELSE [条件式1が負のときの処理] END

年齢が20以上なら成人、20歳未満なら未成年と表示する

SELECT *, CASE WHEN age >= 20 THEN '成人' ELSE '未成年' END FROM person;
-- 結果 -- 
 a    |  20 | 成人
 b    |  10 | 未成年
 c    |  15 | 未成年
 d    |  30 | 成人
 e    |  40 | 成人
0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?