はじめに
こちらはスッキリわかるSQL入門をまとめた記事となります。
今回は「式と関数」についてです。
プログラミング初学者向けの内容となっていますので、お気づきの点があれば、コメントの方をよろしくお願いします。
式の種類
条件式 - 「出金額 > 0」のように結果が真や偽になる式。
計算式 - 「出金額 + 100」のように結果が真や偽にならない式。
基本的な算術演算子
+演算子や-演算子は、数値の計算以外にも利用できる。
日々の計算や DBMSによっては文字列の連結ができることは覚えておく。
演算子 | 使い方 | 説明 |
---|---|---|
+ | 数値 + 数値 | 数値同士で足し算する |
日付 + 数値 | 日付を指定日数だけ進める | |
- | 数値 - 数値 | 数値同士で引き算をする |
日付 - 数値 | 日付を指定日数だけ戻す | |
日付 - 日付 | 日付の差の日数を得る | |
* | 数値 * 数値 | 数値同士で掛け算をする |
/ | 数値 / 数値 | 数値同士で割り算をする※1 |
‖ | 文字列 ‖ 文字列 | 文字列を連結する※2 |
※1 整数同士の場合は商が返される | ||
※2 DBMSによっては文字列連結の演算子として「‖」ではなく「+」が利用されることもある。 |
CASE 演算子
値を変換する。
式の結果に応じて、複数のパターンをえたい場合に有効。
SELECT 費目, 出金額,
CASE 費目 WHEN '居住費' THEN '固定費'
WHEN '水道光熱費' THEN '固定費'
ELSE '変動費'
END AS 出費の分類
FROM 家計簿 WHERE 出金額 > 0
SELECT 費目, 入金額,
CASE WHEN 入金額 < 5000 THEN '固定費' -- 最初に一致したWHENが採用される
WHEN 入金額 < 100000 THEN '固定費'
WHEN 入金額 < 300000 THEN '給料出た!'
ELSE '想定外の収入です!' -- WHENが採用されなければELSEが採用される
END AS 収入の分類
FROM 家計簿
WHERE 入金額 > 0
LENGTH 関数
文字列の長さを取得
SELECT メモ,LENGTH(メモ) AS メモの長さ FROM 家計簿;
TRIM/LTRIM/RTRIM 関数
文字列の前後についている、余計な空白を除去する
SELECT メモ,TRIM(メモ) AS 空白除去したメモ FROM 家計簿;
REPLACE 関数
文字列の一部を別の文字列に置換する関数
REPLACE(置換対象の文字列,置換前の部分文字列,置換後の部分文字列)
以下、メモ列に入っている「購入」という文字列を全て「全て買った」置き換えるUPDATE文
UPDATE 家計簿 SET メモ = REPLACE(メモ, '購入', '買った');
SUBSTRING/SUBSTR 関数
文字列の一部分を抽出する
SELECT * FROM 家計簿 WHERE SUBSTRING(費目, 1, 3) LIKE '%費%'
CONCAT 関数
文字列を連結する
SELECT CONCAT(費目,':' || メモ) FROM 家計簿;
ROUND 関数
指定した位置で四捨五入した結果を返す関数
SELECT 出金額, ROUND(出金額, -2) AS 百円単位の出金額 FROM 家計簿;
#TRUNC 関数
指定した桁で切り捨てる
#POWER 関数
ある値のべき乗(2乗や3乗など)を計算する
CURRENT_DATE/CURRENT_TIME 関数
現在の日付/現在の時刻を得る
INSERT INTO 家計簿 VALUES(CURRENT_DATE, '食費',' ドーナッツを買った', 0, 260);
CAST 関数
データ型を変換する
CAST(変換する値 AS 変換する型) => 変換後の値
COALESCE 関数
複数の引数を受け取り、受け取った引数を左から順番にチェックし、その中から最初に見つかったNULLでない引数を返す
SELECT COALESCE('A','B','C'); /* 結果は'A'*/
SELECT COALESCE(NULL,'B','C'); /* 結果は'B'*/
SELECT COALESCE(NULL,'B',NULL); /* 結果は'B'*/
SELECT COALESCE(数値型の列,0); /*数値型の列が出力されます。*/
SELECT 日付, 費目, COALESCE (メモ, '(メモはNULLです)') AS メモ, 入金額, 出金額 FROM 家計簿;
この章のまとめ
計算式
・列やリテラルを使用した式で、結果が真または偽にならないものを計算式という。
・計算式を評価すると計算結果に化ける。
・計算式は、SELECT文の選択れるリスト、INSERT文やUPDATE文での列に格納する値、そのほかの修飾句など、さまざまな場所で使用することができる。
計算式に用いる演算子
・四則演算を行う演算子を算術演算子という。
・ ‖ や + で文字列の連結ができる。
・CASE演算子は、列の値や条件式を評価して、任意の値に変換することができる。
関数
・関数は、引数に大して決められた処理を行い、戻り値に変換する。
・処理の内容や戻り値に応じて、文字列関数、算術関数、日付関数、変換関数などに分類できる。
・関数は、DBMS製品による違いが大きい機能であるため、処理内容の確認が不可欠である。