ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【SQL】SQLの関数

よく使う関数

LENGTH()・・・文字列の長さ

LENGTH(列名)

SELECT  LENGTH(email)
FROM customers;

☀︎メールアドレスが何バイトなのか。
名前などの文字数を数えたいときはCHAR_LENGTH()を推奨

TRIM()・・・空白の除去

  • CHAR型の列の空白を取り除くときに使う。

TRIM(列名)

SELECT  TRIM(name)
FROM customers;

☀︎文字列の左右から空白を取り除く。「 あいう 」→「あいう」

☀︎空白を除去する関数☀︎
・TRIM()・・・・左右から空白を除去
・LTRIM() ・・・左側から空白を除去
・RTRIM()・・・右側から空白を除去

REPLACE()・・・指定した文字を置換

REPLACE(列名, '置換前', '置換後')

UPDATE  items
SET item_name = REPLACE(item_name, 'abc', 'xyz');

☀︎文字列の一部を書き換える。「12abc34」→「12xyz34」

SUBSTRING()・・・文字列の一部を抽出する

SUBSTRING(列名, 開始位置, 文字数)

SELECT SUBSTRING(item_name, 1, 5)
FROM  items;

☀︎指定した列の1〜5文字目だけを抽出する.

  • WHERE句で条件を追加して使うことが多い。 WHERE SUBSTRING(item_name, 1, 5) = 'apple'

ROUND()・・・四捨五入

ROUND(数値型の列名, 有効桁数)

SELECT ROUND(price, -2)
FROM  items;

☀︎-2なので下2桁(10の位)で四捨五入する。「380」円→「400」円

TRUNC()・・・切り捨て

TRUNC(数値型の列名, 有効桁数)

SELECT TRUNC(price, -2)
FROM  items;

☀︎-2なので下2桁(10の位)で切り捨てる。「380」円→「300」

POWER()・・・べき乗を計算

POWER(数値型の列名または数値, 何乗かを指定する数値)

SELECT POWER(2, 3);

☀︎2の3乗(2×2×2)を計算し、結果は「8」となる。

CURRENT_DATE・・・現在の日時を取得

データベースの追加や更新した日時を記録しておくことが多い。

  • CURRENT_TIMESTAMP・・・現在の日時(年、月、日、時、分、秒)
  • CURRENT_DATE    ・・・現在の日付(年、月、日)
  • CURRENT_TIME    ・・・現在の時刻(時、分、秒)
INSERT INTO customers (id, name, age, created_date)
VALUES  (3, ’John’, 20, CURRENT_DATE);

☀︎created_date (登録日)に今日の日付が自動的に入る。

CAST()・・・データ型の変換

データ型一覧

  • あるデータ型を別のデータ型に変換するための関数。

CAST(変換したい値や列名 AS 変換後のデータ型)

SELECT id, CAST(created_date AS CHAR)
FROM customers;

☀︎DATETIME型から文字列型に変換する

ストアドプログラム

SQLにはデータベースへの複数の命令をまとめてRDBMSに保存する機能がある。

  • ストアドファンクション(ユーザー定義関数)

    • 必要な処理を自分で関数として作成して保存する。
    • 必ず戻り値を返す。
    • CREATE FUNCTIONで定義、SELECT文で呼び出し
    • SQL内で複雑な計算や値の加工をしたいときに便利。
  • ストアドプロシージャ

    • 複数のSQL処理をまとめて保存する。
    • 戻り値は返さない。
    • CREATE PROCEDUREで定義、CALLで呼び出し
    • SELECT文などのSQLで直接使えない。
    • SQLインジェクション対策の一つとして使える。

参考にしたサイト