LoginSignup
1
0

More than 3 years have passed since last update.

SQL 述語・CASE文編

Last updated at Posted at 2019-09-14

述語と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
1
0
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
1
0