SQL文字列関数 — CONCAT、SUBSTRING、TRIM、REPLACE
SQL文字列関数のリファレンス:CONCAT、SUBSTRING、UPPER、LOWER、TRIM、REPLACE、LENGTH。PostgreSQL、MySQL、SQLiteのダイアレクト固有の関数も解説します。
Functions
詳細な説明
SQLでのテキスト操作
文字列関数を使えば、クエリ内で直接テキスト値を操作できます — 連結、部分文字列の抽出、ケース変換など。
連結
-- Standard SQL / PostgreSQL
SELECT first_name || ' ' || last_name AS full_name FROM employees;
-- MySQL
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
ケース変換
SELECT UPPER(name) AS upper_name, LOWER(email) AS lower_email
FROM employees;
部分文字列の抽出
-- 最初の3文字を抽出
SELECT SUBSTRING(name, 1, 3) AS initials FROM employees;
-- PostgreSQLはLEFT/RIGHTもサポート
SELECT LEFT(name, 3), RIGHT(email, 10) FROM employees;
空白のトリミング
SELECT TRIM(name) AS trimmed FROM employees;
SELECT LTRIM(name), RTRIM(name) FROM employees;
-- 特定の文字をトリム(PostgreSQL)
SELECT TRIM(BOTH '-' FROM slug) FROM articles;
置換と長さ
SELECT REPLACE(email, '@old.com', '@new.com') AS migrated_email
FROM employees;
SELECT name, LENGTH(name) AS name_length FROM employees;
ダイアレクト固有のハイライト
PostgreSQL:
INITCAP(str)— 各単語の先頭文字を大文字化REGEXP_REPLACE(str, pattern, replacement, flags)STRING_AGG(col, delimiter)— グループ値の連結
MySQL:
CONCAT_WS(separator, str1, str2, ...)— セパレータ付き連結LOCATE(substr, str)— 位置の検索LPAD(str, len, pad)/RPAD— 文字列のパディングGROUP_CONCAT(col SEPARATOR ',')
SQLite:
- SUBSTRINGの代わりに
SUBSTR(str, start, length)を使用 GROUP_CONCAT(col, separator)- 組み込みの文字列関数が限定的。デフォルトで正規表現はなし
ユースケース
クエリ内でテキストデータのクリーニングや変換を行っている場合(例えば、メールアドレスの正規化、姓名カラムからの表示名の構築、構造化された文字列の一部の抽出)。