に最終更新
CONCAT
説明
CONCAT 関数は複数の文字列を引数の順に連結し、一つの文字列を返します。引数を可変個数指定でき、文字列処理で最も基本的かつ一般的に使用される関数の一つです。データの連結、レポートの生成、動的 SQL の構築などに使用されます。いずれかの引数が NULL の場合、結果全体が NULL になります。
構文
CONCAT(<expr> [, <expr> ...])
パラメータ
| パラメータ | 説明 |
|---|---|
<expr> | 連結する文字列式。文字列定数、列名、その他の式を指定できます。型: VARCHAR |
戻り値
すべての引数を連結した文字列を VARCHAR 型で返します。
連結の規則:
- 引数の順に文字列を連結します
- 任意の個数の引数を指定できます(最低 1 個)
- UTF-8 のマルチバイト文字を正しく連結できます
- 数値やその他の型は自動的に文字列へ変換されます
特殊なケース:
- いずれかの引数が NULL の場合、NULL を返します(CONCAT_WS との主な違い)
- 引数を指定しない場合、構文エラーになります
- 空文字列の引数は連結結果に影響しません
- 文字列以外の型と組み合わせて使用できます
例
- 基本的な文字列の連結
SELECT CONCAT('a', 'b'), CONCAT('a', 'b', 'c');
+------------------+-----------------------+
| CONCAT('a', 'b') | CONCAT('a', 'b', 'c') |
+------------------+-----------------------+
| ab | abc |
+------------------+-----------------------+
- NULL 値の扱い(主な特徴)
SELECT CONCAT('a', NULL, 'c'), CONCAT('hello', NULL);
+------------------------+---------------------+
| CONCAT('a', NULL, 'c') | CONCAT('hello', NULL) |
+------------------------+---------------------+
| NULL | NULL |
+------------------------+---------------------+
- 空文字列の扱い
SELECT CONCAT('hello', '', 'world'), CONCAT('', 'test', '');
+-----------------------------+------------------------+
| CONCAT('hello', '', 'world') | CONCAT('', 'test', '') |
+-----------------------------+------------------------+
| helloworld | test |
+-----------------------------+------------------------+
- 数値と文字列の組み合わせ
SELECT CONCAT('User', 123), CONCAT('Price: $', 99.99);
+---------------------+---------------------------+
| CONCAT('User', 123) | CONCAT('Price: $', 99.99) |
+---------------------+---------------------------+
| User123 | Price: $99.99 |
+---------------------+---------------------------+
- 複数の引数の連結
SELECT CONCAT('A', 'B', 'C', 'D', 'E'), CONCAT('1', '2', '3', '4', '5');
+----------------------------------+----------------------------------+
| CONCAT('A', 'B', 'C', 'D', 'E') | CONCAT('1', '2', '3', '4', '5') |
+----------------------------------+----------------------------------+
| ABCDE | 12345 |
+----------------------------------+----------------------------------+
- UTF-8 のマルチバイト文字の連結
SELECT CONCAT('ṭṛì', ' ', 'ḍḍumai'), CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai');
+------------------------------+--------------------------------------+
| CONCAT('ṭṛì', ' ', 'ḍḍumai') | CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai') |
+------------------------------+--------------------------------------+
| ṭṛì ḍḍumai | Hello ṭṛì ḍḍumai |
+------------------------------+--------------------------------------+
- パスと URL の構築
SELECT CONCAT('/home/', 'user/', 'file.txt'), CONCAT('https://', 'www.example.com', '/api');
+--------------------------------------+----------------------------------------------+
| CONCAT('/home/', 'user/', 'file.txt') | CONCAT('https://', 'www.example.com', '/api') |
+--------------------------------------+----------------------------------------------+
| /home/user/file.txt | https://www.example.com/api |
+--------------------------------------+----------------------------------------------+
- メールアドレスの構築
SELECT CONCAT('user', '@', 'example.com'), CONCAT('admin.', 'support', '@', 'company.org');
+------------------------------------+-----------------------------------------------+
| CONCAT('user', '@', 'example.com') | CONCAT('admin.', 'support', '@', 'company.org') |
+------------------------------------+-----------------------------------------------+
| user@example.com | admin.support@company.org |
+------------------------------------+-----------------------------------------------+