関数
関数には大きく下記の関数がある。
関数名 | 説明 |
---|---|
算術関数 | 数値の計算を行う |
文字列関数 | 文字列を操作する |
日付関数 | 日付を操作する |
変換関数 | データ型や値を変換する |
集約関数 | データの集計を行う |
関数自体は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 NULL
:NULL
か非NULL
かの判定
式 | 説明 |
---|---|
IS NULL |
NULL かを判定 |
IS NOT NULL |
NULL 以外かを判定 |
IN
述語:OR
の便利な省略形
IN
はOR
をすっきりと書くことができる。
-- 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 評価式 THEN 式 WHEN 評価式 THEN 式 ... ELSE 式 END