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

SQL 述語・CASE文編

述語とCASE文

述語は戻り値が真理値になる関数のこと

目次:

述語

・LIKE述語
・BETWEEN述語
・IS NULL, IS NOT NULL

CASE文

文字列の部分一致検索 LIKE述語 

文字を検索する際、文の一部分だけを指定して、それが含まれる文字を探してくれる便利なLIKE述語。

・前方一致

下記の例では、「dddなんとか〜」という文字を探してきます。

SELECT *
FROM SampleLike
WHERE 'ddd%';

・中間一致

これは、どこかの位置にdddが含まれる文字を探します。

〜dddやddd~、また〜ddd〜などなど

SELECT *
FROM SampleLike
WHERE '%ddd%';

・後方一致

これは、「なんとか〜ddd」という文字を探します。

SELECT *
FROM SampleLike
WHERE '%ddd';

範囲検索 BETWEEN述語

対象 BETWEEN 下限 AND 上限

1下記、単価を取得する際、「100円から1000円までの」と範囲を絞れます。

SELECT shohin_mei, hanbai_tanka
FROM Shohin
WHERE hanbai_tanka BETWEEN 100 AND 1000;

反対に含みたくないときは

SELECT shohin_mei, hanbai_tanka
FROM Shohin
WHERE hanbai_tanka > 100
AND hanbai_tanka < 1000;

NULLかどうかの判定 IS NULL / IS NOT NULL

NULLは = NULLということができません。

NULLを指定する場合はIS NULL

NULLを排除したいときは IS NOT NULLです。

SELECT shohin_mei, shiire_tanka
FROM Shohin
WHERE shiire_tanka IS NULL;

場合分けを記述する CASE文

単純CASE式

CASE <式>
WHEN <式> THEN <式>
WHEN <式> THEN <式>
ELSE <式>
END
CASE hanbai_tanka
WHEN 100 THEN '100円'
WHEN 200 THEN '200円'
ELSE 'その他'
END

例2

SELECT 費目, 出金額,
CASE 費目 WHEN '居住費' THEN '固定費'
WHEN '教育費' THEN '固定費'
ELSE '固定費'
END AS 出費の分類
FROM 家計簿 WHERE 出金額 > 0

検索CASE式

WHEN <評価式>THEN<式>
WHEN <評価式>THEN<式>
ELSE  <評価式>
SELECT SUM(CASE WHEN shohin_bunrui = '衣服'
THEN hanbai_tanka ELSE 0 END) AS sum_tanka_ihuku,
SUM(CASE WHEN shohin_bunrui = 'キッチン用品'
THEN hanbai_tanka ELSE 0 END) AS sum_tanka_kitchin
FROM Shohin;

例2

SELECT メールアドレス
CASE WHEN 年齢 >= 20 AND 年齢 < 30 THEN '20代'
WHEN 年齢 >= 30 AND 年齢 < 40 THEN '40代'
END
Why do not you register as a user and use Qiita more conveniently?
  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
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