SQLで文字列を結合(連結)して取得するためにはCONCAT関数やCONCAT_WS関数、文字列結合子「||」を使用することで可能となります。DBMS毎で微妙に違いはありますが、ここではPostgreSQLでの実行サンプルをベースに説明していきます。
サンプルテーブル
目次
CONCAT関数の使用例
- クエリー(SQL)例
CONCAT関数は連結したい文字をカンマ「,」で区切って指定すれば文字列連結可能となります。 Oracleの場合はCONCAT関数の引数は2つしか指定できないのでCONCAT関数を入れ子にして指定する必要があります。面倒なのでそういう場合は文字列結合子「||」を使用します。SELECT CONCAT('商品名=', name, ', 商品コード=',type_code) AS "連結文字列" FROM goods; - 実行結果

文字列結合子「||」の使用例
- クエリー(SQL)例
文字列結合子「||」はCONCAT関数と同様の結果を取得できます。連結する文字列が少ない場合はこちらの方が比較的シンプルに記述できます。SELECT ('商品名=' || name || ', 商品コード=' || type_code) AS "連結文字列" FROM goods; - 実行結果

CONCAT_WS関数の使用例
- クエリー(SQL)例
CONCAT_WS関数は第一引数にセパレータ(区切り文字)を指定し、第二引数から連結したい文字列をカンマ区切りで指定します。SELECT CONCAT_WS('-',name, type_code) AS "連結文字列" FROM goods; - 実行結果

📌 補足:文字列結合で知っておきたいポイント
SQLで文字列を結合する方法はDBMSごとに若干の書き方の違いがありますが、実際の現場では次の点も意識しておくとさらに安全・効果的に扱えます。
🔹 NULL 値の扱いに注意
結合対象のカラムに NULL が含まれていると、意図した連結結果が得られないことがあります(例:NULL と連結すると全体が NULL になる)。
必要に応じて COALESCE や ISNULL などで事前に空文字に変換しておくと安心です。
🔹 パフォーマンスを意識する
大量データを結合するクエリでは、文字列操作がボトルネックになるケースがあります。結合前に必要箇所だけ抽出したり、インデックスを活用したりすることで実行計画が改善できることがあります。
🔹 文字コードやエンコーディング
複数バイト文字(UTF-8 など)が含まれる場合、DBMSの設定や関数の扱いによって結果が変わる場合があります。
特に国際化対応や多言語データを扱う際は、環境に合わせて文字コード周りの動作を確認してください。
🔹 DBMSごとの関数差分
ひとことで文字列結合といっても、CONCAT/CONCAT_WS/|| のサポート状況や挙動はDBMSによって異なります。
たとえば MySQL は CONCAT() を推奨、PostgreSQL では演算子 || がよく使われます。自分が使っているDBMSのリファレンスも合わせてチェックしましょう。






