SQLにおける文字列操作(テキスト処理)を行うための関数は非常に多く、データベース管理システム(DBMS)において重要な役割を果たします。ここでは、SQLでテキストを操作するための関数を包括的に紹介し、その使い方や実際の活用方法について詳しく解説します。
1. 文字列の長さを取得する関数
文字列の長さを取得するためには、LENGTH
またはLEN
関数を使用します。これらの関数は、指定した文字列の文字数を返します。

例:
sqlSELECT LENGTH('こんにちは');
-- 結果: 5
SELECT LEN('こんにちは');
-- 結果: 5 (SQL Serverの場合)
LENGTH
はMySQLやPostgreSQLなどで使われますが、LEN
はSQL Serverに特化した関数です。
2. 文字列の一部を取得する関数
文字列の一部を取り出すためには、SUBSTRING
関数を使用します。この関数を使うことで、文字列の任意の位置から指定した長さの部分文字列を取得することができます。
例:
sqlSELECT SUBSTRING('こんにちは', 2, 3);
-- 結果: んにち
ここでは、こんにちは
という文字列の2番目の文字から3文字分を取得しています。
3. 文字列の検索
文字列の中で特定の文字列が最初に出現する位置を調べるには、POSITION
またはINSTR
関数を使います。これらの関数は、指定した文字列が最初に現れる位置を返します。
例:
sqlSELECT POSITION('に' IN 'こんにちは');
-- 結果: 2
SELECT INSTR('こんにちは', 'に');
-- 結果: 2 (MySQLやPostgreSQL)
POSITION
関数はSQL標準に準拠しており、INSTR
はMySQLやOracleでよく使用されます。
4. 文字列の置換
文字列内の特定の部分を別の文字列に置き換えるには、REPLACE
関数を使用します。この関数は指定した文字列を新しい文字列に置き換えます。
例:
sqlSELECT REPLACE('こんにちは世界', '世界', '日本');
-- 結果: こんにちは日本
ここでは、「世界」を「日本」に置き換えています。
5. 文字列の結合
複数の文字列を結合するには、CONCAT
関数を使用します。複数の文字列を一つの文字列に連結することができます。
例:
sqlSELECT CONCAT('こんにちは', ' ', '世界');
-- 結果: こんにちは 世界
CONCAT
関数は、引数として渡された複数の文字列を結合して一つの文字列にします。
6. 文字列の前後の空白を削除
文字列の前後に存在する余分な空白を削除するには、TRIM
関数を使用します。この関数は、文字列の前後にある空白を削除します。
例:
sqlSELECT TRIM(' こんにちは ');
-- 結果: こんにちは
TRIM
関数は、文字列の両端にある空白文字を取り除くため、余計な空白を処理する際に便利です。
7. 文字列の大文字・小文字の変換
文字列の大文字や小文字を変換するためには、UPPER
やLOWER
関数を使用します。
例:
sqlSELECT UPPER('こんにちは');
-- 結果: こんにちは (大文字に変換)
SELECT LOWER('HELLO');
-- 結果: hello (小文字に変換)
これらの関数は、文字列のすべての文字を大文字または小文字に変換します。
8. パターンマッチング
SQLでは、パターンマッチングを使用して文字列を検索することができます。LIKE
演算子やREGEXP
演算子を使用して、指定したパターンに一致する文字列を検索します。
例:
sqlSELECT * FROM users WHERE name LIKE 'T%';
-- 名前がTで始まるユーザーを検索
SELECT * FROM products WHERE description REGEXP '^[A-Za-z]+$';
-- 英字のみで構成された商品の説明を検索
LIKE
演算子は、ワイルドカード(%
や_
)を使用して部分一致検索を行う際に使います。REGEXP
演算子は正規表現を使用した検索が可能です。
9. NULL値の扱い
文字列がNULL値の場合、その扱いには注意が必要です。SQLでのNULL値の比較や操作には特別な関数を使います。例えば、COALESCE
関数を使って、NULL値を別の値に置き換えることができます。
例:
sqlSELECT COALESCE(NULL, 'デフォルト値');
-- 結果: デフォルト値
COALESCE
関数は、最初にNULLでない値を返します。複数の引数を指定すると、NULLでない最初の値を返します。
10. 文字列の結合(複数行の文字列を1つに)
複数の行の文字列を1つにまとめるには、GROUP_CONCAT
関数を使用します。この関数は、グループ化された結果を1つの文字列に結合します。
例:
sqlSELECT GROUP_CONCAT(name)
FROM employees
WHERE department = '営業';
-- 営業部門の全従業員名を1行に結合
GROUP_CONCAT
関数は、結果セットの複数の行を1つの文字列として返します。
まとめ
SQLでの文字列操作は、データの整形や分析に非常に重要です。文字列の長さを取得する関数から、文字列の置換や結合、パターンマッチング、NULLの扱いまで、さまざまな関数を駆使することで、データベース内で効率的に文字列操作を行うことができます。これらの関数を活用することで、データベースから必要な情報をより迅速かつ正確に取得することができ、業務効率化に大きく貢献します。