文字列関数の使い方
文字を加工する
書き方
UPPER(s) LOWER(s) LENGTH(s) SUBSTRING(s FROM 開始 FOR 長さ) / SUBSTR(s, 開始, 長さ) TRIM(s) REPLACE(s, 古, 新) LPAD(s, 桁, 文字) s || t CONCAT(s, t)
|| で文字列をつなげます。位置は 1 から数えます。
よく使うオプション
| オプション | 意味 |
|---|---|
UPPER / LOWER | 大文字に / 小文字にする |
LENGTH(s) | 文字の数 |
SUBSTRING / SUBSTR | 一部を取り出す(位置は 1 から数える) |
TRIM(s) | 前後の空白を取る |
REPLACE(s, 古, 新) | 文字を置き換える |
s || t | 文字列をつなぐ(CONCAT(s, t) も同じ) |
例
SELECT name || 'さん' AS label FROM employees; label
----------
佐藤さん
鈴木さん
(2 rows)名前の後ろに「さん」をつなげて出します。
SELECT email, LOWER(email) FROM employees;
メールアドレスをすべて小文字にして出します。大文字と小文字の混じった値をそろえるときに使います。
SELECT SUBSTRING(phone FROM 1 FOR 2) AS area FROM customers;
電話番号の先頭 2 文字を取り出します。SUBSTR(phone, 1, 2) と書いても同じです。
SELECT REPLACE(phone, '-', '') FROM customers; replace
------------
0312345678
(1 row)電話番号からハイフンを取り除きます。
よくある間違い・注意
- || で NULL をつなぐと、結果がまるごと NULL になります(PostgreSQL)。CONCAT は NULL を空として扱います。
- MySQL では || が文字列をつながず「または」の意味になる設定があります。そのときは CONCAT を使います。
- LENGTH は文字の数を数えます。バイト数が欲しいときは OCTET_LENGTH を使います(PostgreSQL)。
実際に打って練習する
SQL コースの Lv14「文字を操る関数」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。