3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL]SQL入門 - 式と関数 -

Last updated at Posted at 2021-07-17

はじめに

こちらはスッキリわかるSQL入門をまとめた記事となります。
今回は「式と関数」についてです。
プログラミング初学者向けの内容となっていますので、お気づきの点があれば、コメントの方をよろしくお願いします。

式の種類

条件式 - 「出金額 > 0」のように結果が真や偽になる式。
計算式 - 「出金額 + 100」のように結果が真や偽にならない式。

基本的な算術演算子

+演算子や-演算子は、数値の計算以外にも利用できる。
日々の計算や DBMSによっては文字列の連結ができることは覚えておく。

演算子 使い方 説明
+ 数値 + 数値 数値同士で足し算する
日付 + 数値 日付を指定日数だけ進める
-        数値 - 数値 数値同士で引き算をする
日付 - 数値 日付を指定日数だけ戻す
日付 - 日付 日付の差の日数を得る
* 数値 * 数値 数値同士で掛け算をする
/ 数値 / 数値 数値同士で割り算をする※1
文字列 ‖ 文字列 文字列を連結する※2
※1 整数同士の場合は商が返される
※2 DBMSによっては文字列連結の演算子として「‖」ではなく「+」が利用されることもある。

CASE 演算子

値を変換する。
式の結果に応じて、複数のパターンをえたい場合に有効。

CASE演算子①
SELECT 費目, 出金額,
  CASE 費目 WHEN '居住費' THEN '固定費'
            WHEN '水道光熱費' THEN '固定費'
            ELSE '変動費'
         END AS 出費の分類
  FROM 家計簿 WHERE 出金額 > 0

結果①
スクリーンショット 2021-07-17 6.36.50.png

CASE演算子②
SELECT 費目, 入金額,
  CASE WHEN 入金額 < 5000 THEN '固定費' -- 最初に一致したWHENが採用される
       WHEN 入金額 < 100000 THEN '固定費'
       WHEN 入金額 < 300000 THEN '給料出た!'
       ELSE '想定外の収入です!' -- WHENが採用されなければELSEが採用される
   END AS 収入の分類
  FROM 家計簿 
 WHERE 入金額 > 0

結果②
スクリーンショット 2021-07-17 6.39.00.png

LENGTH 関数

文字列の長さを取得

LENGTH関数
SELECT メモ,LENGTH(メモ) AS メモの長さ FROM 家計簿;

結果
スクリーンショット 2021-07-17 6.42.03.png

TRIM/LTRIM/RTRIM 関数

文字列の前後についている、余計な空白を除去する

TRIM関数
SELECT メモ,TRIM(メモ) AS 空白除去したメモ FROM 家計簿;

結果
スクリーンショット 2021-07-17 6.43.23.png

REPLACE 関数

文字列の一部を別の文字列に置換する関数

REPLACE関数
REPLACE(置換対象の文字列,置換前の部分文字列,置換後の部分文字列)

以下、メモ列に入っている「購入」という文字列を全て「全て買った」置き換えるUPDATE文

REPLACE関数
UPDATE 家計簿 SET メモ = REPLACE(メモ, '購入', '買った');

結果
スクリーンショット 2021-07-17 6.51.17.png

Something went wrong

SUBSTRING/SUBSTR 関数

文字列の一部分を抽出する

SUBSTRING関数
SELECT * FROM 家計簿 WHERE SUBSTRING(費目, 1, 3) LIKE '%費%'

結果
スクリーンショット 2021-07-17 6.52.47.png

CONCAT 関数

文字列を連結する

CONCAT関数
SELECT CONCAT(費目,':' || メモ) FROM 家計簿;

結果
スクリーンショット 2021-07-17 6.54.06.png

ROUND 関数

指定した位置で四捨五入した結果を返す関数

ROUND関数
SELECT 出金額, ROUND(出金額, -2) AS 百円単位の出金額 FROM 家計簿;

結果
スクリーンショット 2021-07-17 6.55.47.png

#TRUNC 関数
指定した桁で切り捨てる

#POWER 関数
ある値のべき乗(2乗や3乗など)を計算する

CURRENT_DATE/CURRENT_TIME 関数

現在の日付/現在の時刻を得る

CURRENT_DATE関数
INSERT INTO 家計簿 VALUES(CURRENT_DATE, '食費',' ドーナッツを買った', 0, 260);

結果
Something went wrong
スクリーンショット 2021-07-17 6.58.21.png

CAST 関数

データ型を変換する
CAST(変換する値 AS 変換する型) => 変換後の値

COALESCE 関数

複数の引数を受け取り、受け取った引数を左から順番にチェックし、その中から最初に見つかったNULLでない引数を返す

COALESCE関数
SELECT COALESCE('A','B','C'); /* 結果は'A'*/
SELECT COALESCE(NULL,'B','C'); /* 結果は'B'*/
SELECT COALESCE(NULL,'B',NULL); /* 結果は'B'*/
SELECT COALESCE(数値型の列,0); /*数値型の列が出力されます。*/
COALESCE関数
SELECT 日付, 費目, COALESCE (メモ, '(メモはNULLです)') AS メモ, 入金額, 出金額 FROM 家計簿;

結果
スクリーンショット 2021-07-17 7.00.28.png

この章のまとめ

計算式
・列やリテラルを使用した式で、結果が真または偽にならないものを計算式という。
・計算式を評価すると計算結果に化ける。
・計算式は、SELECT文の選択れるリスト、INSERT文やUPDATE文での列に格納する値、そのほかの修飾句など、さまざまな場所で使用することができる。

計算式に用いる演算子
・四則演算を行う演算子を算術演算子という。
・ ‖ や + で文字列の連結ができる。
・CASE演算子は、列の値や条件式を評価して、任意の値に変換することができる。

関数
・関数は、引数に大して決められた処理を行い、戻り値に変換する。
・処理の内容や戻り値に応じて、文字列関数、算術関数、日付関数、変換関数などに分類できる。
・関数は、DBMS製品による違いが大きい機能であるため、処理内容の確認が不可欠である。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?