メインコンテンツまでスキップ
に最終更新

CONCAT

説明​

CONCAT 関数は複数の文字列を引数の順に連結し、一つの文字列を返します。引数を可変個数指定でき、文字列処理で最も基本的かつ一般的に使用される関数の一つです。データの連結、レポートの生成、動的 SQL の構築などに使用されます。いずれかの引数が NULL の場合、結果全体が NULL になります。

構文​

CONCAT(<expr> [, <expr> ...])

パラメータ​

パラメータ説明
<expr>連結する文字列式。文字列定数、列名、その他の式を指定できます。型: VARCHAR

戻り値​

すべての引数を連結した文字列を VARCHAR 型で返します。

連結の規則:

  • 引数の順に文字列を連結します
  • 任意の個数の引数を指定できます(最低 1 個)
  • UTF-8 のマルチバイト文字を正しく連結できます
  • 数値やその他の型は自動的に文字列へ変換されます

特殊なケース:

  • いずれかの引数が NULL の場合、NULL を返します(CONCAT_WS との主な違い)
  • 引数を指定しない場合、構文エラーになります
  • 空文字列の引数は連結結果に影響しません
  • 文字列以外の型と組み合わせて使用できます

例​

  1. 基本的な文字列の連結
SELECT CONCAT('a', 'b'), CONCAT('a', 'b', 'c');
+------------------+-----------------------+
| CONCAT('a', 'b') | CONCAT('a', 'b', 'c') |
+------------------+-----------------------+
| ab | abc |
+------------------+-----------------------+
  1. NULL 値の扱い(主な特徴)
SELECT CONCAT('a', NULL, 'c'), CONCAT('hello', NULL);
+------------------------+---------------------+
| CONCAT('a', NULL, 'c') | CONCAT('hello', NULL) |
+------------------------+---------------------+
| NULL | NULL |
+------------------------+---------------------+
  1. 空文字列の扱い
SELECT CONCAT('hello', '', 'world'), CONCAT('', 'test', '');
+-----------------------------+------------------------+
| CONCAT('hello', '', 'world') | CONCAT('', 'test', '') |
+-----------------------------+------------------------+
| helloworld | test |
+-----------------------------+------------------------+
  1. 数値と文字列の組み合わせ
SELECT CONCAT('User', 123), CONCAT('Price: $', 99.99);
+---------------------+---------------------------+
| CONCAT('User', 123) | CONCAT('Price: $', 99.99) |
+---------------------+---------------------------+
| User123 | Price: $99.99 |
+---------------------+---------------------------+
  1. 複数の引数の連結
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 |
+----------------------------------+----------------------------------+
  1. UTF-8 のマルチバイト文字の連結
SELECT CONCAT('ṭṛì', ' ', 'ḍḍumai'), CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai');
+------------------------------+--------------------------------------+
| CONCAT('ṭṛì', ' ', 'ḍḍumai') | CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai') |
+------------------------------+--------------------------------------+
| ṭṛì ḍḍumai | Hello ṭṛì ḍḍumai |
+------------------------------+--------------------------------------+
  1. パスと 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 |
+--------------------------------------+----------------------------------------------+
  1. メールアドレスの構築
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 |
+------------------------------------+-----------------------------------------------+