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)
  • 組み込みの文字列関数が限定的。デフォルトで正規表現はなし

ユースケース

クエリ内でテキストデータのクリーニングや変換を行っている場合(例えば、メールアドレスの正規化、姓名カラムからの表示名の構築、構造化された文字列の一部の抽出)。

試してみる — SQL Cheat Sheet

フルツールを開く