概要
文字列を連結(結合)するには||演算子か関数
concat()
を使用するが、
カンマやドットなどの文字を挟んで連結する場合は
concat_ws()を使用する。
ExcelのTEXTJOIN()関数と似たような感覚で使える。
ws は whitespace の略…か?
構文
concat_ws(separator, X, Y, ...)
実行例
以下はカンマを使って文字列を連結する場合。
concat()でも同じ結果が得られるが、
concat_ws()の方が簡単に書ける。
sqlite> select concat_ws(',', 'Japan', 'Tokyo', 'Shibuya');
Japan,Tokyo,Shibuya
sqlite> select concat('Japan', ',', 'Tokyo', ',', 'Shibuya');
Japan,Tokyo,Shibuya
テーブルのカラムを連結する例:
sqlite> .mode box
sqlite> select * from user;
┌────┬────────────┬───────────┐
│ id │ first_name │ last_name │
├────┼────────────┼───────────┤
│ 1 │ taro │ yamada │
│ 2 │ jiro │ yamada │
│ 3 │ hanako │ suzuki │
└────┴────────────┴───────────┘
sqlite> select
...> concat_ws('.', first_name, last_name)
...> as full_name
...> from
...> user;
┌───────────────┐
│ full_name │
├───────────────┤
│ taro.yamada │
│ jiro.yamada │
│ hanako.suzuki │
└───────────────┘
NULLを含む場合
区切り文字にNULLを指定した場合、他の引数の内容にかかわらず、結果はNULLになる。
sqlite> .nullvalue [null]
sqlite> select concat_ws(NULL, 'Japan', 'Tokyo', 'Shibuya');
[null]
区切り文字以外にNULLを指定した場合、NULLは無視され、余分な区切り文字が入ることもない。
sqlite> select concat_ws(',', NULL, 'Tokyo', 'Shibuya');
Tokyo,Shibuya
参考URL
-
公式のconcat_ws()に関するドキュメント
https://www.sqlite.org/lang_corefunc.html#concat_ws
-
SQLite3 文字列を連結する (concat(X,Y,...))
https://sfnovicenotes.blogspot.com/2026/02/sqlite3-concatxy.html