メインコンテンツへスキップ
メインコンテンツへスキップ

groupConcat

文字列のグループから連結された文字列を生成します。必要に応じて区切り文字を挿入し、さらに要素数の上限で制限できます。

構文

groupConcat[(delimiter [, limit])](expression);

エイリアス: group_concat

引数

  • expression — 連結する文字列を出力する式またはカラム名。
  • delimiter — 連結された値を区切るために使用される文字列。このパラメータは省略可能で、指定されない場合は空文字列、またはパラメータで指定されたデリミタがデフォルトとして使用されます。

パラメータ

  • delimiter — 連結された値を区切るために使用される文字列。このパラメータは省略可能で、指定されない場合は空文字列がデフォルトになります。
  • limit — 連結する要素数の上限を指定する正の整数。より多くの要素が存在する場合、超過した要素は無視されます。このパラメータは省略可能です。
注記

limit を指定せずに delimiter を指定する場合、delimiter は最初のパラメータでなければなりません。delimiter と limit を両方指定する場合は、delimiter を limit より前に指定する必要があります。

また、パラメータと引数の両方で異なる delimiter が指定された場合、引数で指定された delimiter のみが使用されます。

戻り値

  • カラムまたは式の値を連結した文字列を返します。グループに要素が存在しない場合、または NULL 要素のみであり、かつ関数が「NULL のみ」の値に対する処理を指定していない場合、結果は値が NULL の Nullable 型の文字列になります。

入力テーブル:

┌─id─┬─name─┐
│  1 │ John │
│  2 │ Jane │
│  3 │ Bob  │
└────┴──────┘
  1. 区切り文字なしでの基本的な使い方:

クエリ:

SELECT groupConcat(Name) FROM Employees;

結果:

JohnJaneBob

これは、すべての名前を区切りなしで 1 つの連続した文字列に結合します。

  1. 区切り文字としてカンマを使用する場合:

クエリ:

SELECT groupConcat(', ')(Name)  FROM Employees;

または

SELECT groupConcat(Name, ', ')  FROM Employees;

結果:

John, Jane, Bob

この出力では、名前がカンマとその後のスペースで区切られて表示されます。

  1. 連結される要素数を制限する

Query:

SELECT groupConcat(', ', 2)(Name) FROM Employees;

結果:

John, Jane

このクエリは、テーブル内にそれ以上の名前があっても、出力を先頭の 2 件の名前に制限します。