指定したカラムに含まれる値を連結して表示(group_concat関数)

group_concat 関数を使うと指定したカラムに含まれる値を指定の区切り文字を使って連結して表示することができます。ここでは SQLite における group_concat 関数の使い方について解説します。

(Last modified: )

group_concat関数の使い方

group_concat関数はグループ内のカラムの値を連結して表示するために使用します。書式は次の通りです。

group_concat(カラム名)

引数にはカラム名を指定します。指定したカラムに含まれる値の中で NULL 以外の値を1つの文字列として連結した結果を返します。GROUP BY 句が使われている場合はグループ毎に行われます。

区切り文字を指定しなかった場合はカンマ(,)を区切り文字として値を連結します。カンマ(,)以外の区切り文字を指定する場合は次の書式を使用します。

group_concat(カラム名, 区切り文字)

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table user(id integer, name text, gender text);

group_concat関数の使い方(1)

INSERT 文を使って次のようなデータを格納してあります。

insert into user values(1, 'Honda', 'Man'); insert into user values(2, 'Suzuki', 'Woman'); insert into user values(3, 'Kojima', 'Man'); insert into user values(4, NULL, 'Man'); insert into user values(5, 'Sakai', 'Woman');

group_concat関数の使い方(2)

それでは group_concat 関数を使って name カラムの値を連結して取得してみます。

select group_concat(name) from user;

group_concat関数の使い方(3)

name カラムに含まれる値を、デフォルトの区切り文字であるカンマ(,)で連結した文字列を取得しました。

次に gender カラム毎にグループ化して連結した値をを取得してみます。

select gender, group_concat(name) from user group by gender;

group_concat関数の使い方(4)

GROUP BY 句を使ってグループ化した場合には、グループ単位で対象のカラムの値を連結して取得します。( Group By 句については「データをグループ化して合計や平均を計算(GROUP BY句, HAVING句)」を参照してください)。

連結するときの区切り文字を指定する

区切り文字をデフォルトのカンマ(,)から別の文字にするには、 group_concat 関数の2番目の引数に区切り文字を指定します。

それでは区切り文字としてプラス(+)を指定した group_concat 関数を使って name カラムの値を連結して取得してみます。

select group_concat(name, '+') from user;

連結するときの区切り文字を指定する(1)

name カラムに含まれる値を、指定した区切り文字であるプラス(+)で連結した文字列を取得しました。

-- --

group_concat 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。