RDBMS:関数、述語、CASE式

関数

関数には大きく下記の関数がある。

関数名 説明
算術関数 数値の計算を行う
文字列関数 文字列を操作する
日付関数 日付を操作する
変換関数 データ型や値を変換する
集約関数 データの集計を行う

関数自体は200個以上あり、覚えるのは中々大変で、基本的にレファレンスを参照するということなので、以降では、各関数の代表例について簡単にまとめる😅また、関数、述語、CASE式はSQLでも方言がかなり多い部分ということなので、PostgreSQLに絞ってまとめる。

算術関数

コマンド 説明
数値 + 数値 足し算
数値 - 数値 引き算
数値 * 数値 掛け算
数値 / 数値 割り算
ABS(数値) 絶対値
MOD(被除数, 除数) 剰余
ROUND(対象数, 丸めの桁数) 四捨五入

文字列関数

コマンド 説明
文字列 || 文字列 文字列の連結
LENGTH(文字列) 文字列長の取得
LOWER(文字列) 小文字化
UPPER(文字列) 大文字化
REPLACE(対象文字列, 置換前の文字列, 置換後の文字列) 文字列の置換
SUBSTRING(対象文字列 FROM 切り出し開始位置 FOR 切り出す文字列) 文字列の切り出し
MOD(被除数, 除数) 剰余
ROUND(対象数, 丸めの桁数) 四捨五入

日付関数

コマンド 説明
CURRENT_DATE 現在の日付
CURRENT_TIME 現在の時刻
CURRENT_TIMESTAMP 現在の日時
EXTRACT(日付要素 FROM 日付) 日付要素の切り出し

変換関数

コマンド 説明
CAST(変換前の値 AS 変換するデータ型) 型変換
COALESCE(データ1, データ2,...) NULLを値へ変換
(NULLを別の値に変えて扱いたい時に利用する)
CURRENT_TIMESTAMP 現在の日時
EXTRACT(日付要素 FROM 日付) 日付要素の切り出し

述語

戻り値が真理値になる関数で、下記のようなものがある。基本的にWHERE句と一緒に使うことが多そう。

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

分類 説明
前方一致 LIKE '%検索条件' 検索条件となる文字列が
検索対象の前方に位置するものを検索
中間一致 LIKE '%検索条件%' 検索条件となる文字列が
検索対象の前後に位置するものを検索
後方一致 LIKE '検索条件%' 検索条件となる文字列が
検索対象の後方に位置するものを検索

%は0文字以上の任意の文字列で、_は任意の1文字を意味する。

BETWEEN述語:範囲検索

説明
BETWEEN X1 AND X2 X1~X2の範囲を示す

IS NULL, IS NOT NULLNULL非NULLかの判定

説明
IS NULL NULLかを判定
IS NOT NULL NULL以外かを判定

IN述語:ORの便利な省略形

INORをすっきりと書くことができる。

-- ORで書く場合
SELECT shohin_mei, shiire_tanka
  FROM Shohin
 WHERE shiire_tanka = 320
    OR shiire_tanka = 500
    OR shiire_tanka = 5000;

-- INで書く場合
SELECT shohin_mei, shiire_tanka
  FROM Shohin
 WHERE shiire_tanka IN (320, 500, 5000);

EXISTS 述語

EXISTS述語の役割は、『ある条件に合致するレコードの存在有無を調べる』というものらしい。

CASE

CASE式は、場合分けを記述する時に用いる。通常のプログラミング言語と同様の振る舞いと同じ。CASE文には、単純CASE式と検索CASE式の2種類がある。検索CASE式は単純CASE式の機能も含むため、基本的に検索CASE式を知っておけば良さそう。

検索CASE式の構文は次の通り。

CASE WHEN 評価式 THENWHEN 評価式 THEN 式
     ...
     ELSEEND

参考