よく使う関数
LENGTH()・・・文字列の長さ
LENGTH(列名)
SELECT LENGTH(email) FROM customers;
☀︎メールアドレスが何バイトなのか。
名前などの文字数を数えたいときはCHAR_LENGTH()を推奨
TRIM()・・・空白の除去
- CHAR型の列の空白を取り除くときに使う。
TRIM(列名)
SELECT TRIM(name) FROM customers;
☀︎文字列の左右から空白を取り除く。「 あいう 」→「あいう」
☀︎空白を除去する関数☀︎
・TRIM()・・・・左右から空白を除去
・LTRIM() ・・・左側から空白を除去
・RTRIM()・・・右側から空白を除去
・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インジェクション対策の一つとして使える。