※ この記事にはアフィリエイトリンクが含まれます
SQL Serverでデータを操作する際、複数のカラムの値を結合して1つの文字列として扱いたい場面が多くあります。例えば、次のようなケースです。
- フルネームの作成(姓 + 名)
- 住所の組み立て(都道府県 + 市区町村 + 番地)
- 注文データの情報をまとめる(注文番号 + 商品名 + 数量)
SQL Serverでは、文字列を結合する方法として + 演算子 や CONCAT() 関数 などが利用できます。また、複数行のデータをまとめて1つの文字列にする場合は STRING_AGG() などのテクニックもあります。
この記事では、SQL Serverで文字列を結合するさまざまな方法を、基本的な使い方から応用テクニックまで詳しく解説していきます。
では、さっそく見ていきましょう!
SQLServerを日々使っていると、「自分のスキルって転職市場でどう評価されるんだろう?」と気になる方も多いのではないでしょうか。
実際、SQLServerを扱えるエンジニアは業務系企業や社内SE領域で高く評価される傾向があります。
SQLスキルを活かせる転職先を探したい方はこちらが参考になります。ぜひご覧ください。
社内SEになるなら、「社内SE転職ナビ」がおすすめ

「社内SE転職ナビ」は社内SEに特化したITエンジニア専門の転職・求人サイトです。
エンジニアの社内SEの定義は、「客先常駐がないこと」

社内SEに特化しているこそ、豊富な社内SE・自社開発・情報システム求人を保有しています。
保有求人数は10,000件以上、サイト公開求人数は4,000件以上なので、
社内SEを目指している方は会員登録しておいて損はないです!
+ 演算子を使った文字列結合
SQL Serverでは、+ 演算子を使って文字列を結合することができます。これはシンプルで直感的な方法であり、基本的な文字列操作に広く利用されます。
基本的な使い方
+ 演算子を使うと、複数の文字列を結合できます。
SELECT 'Hello' + ' ' + 'World' AS Result;実行結果
Result
----------------
Hello World このように、+ を使うことで文字列同士を連結できます。
NULL値を含む場合の注意点
+ 演算子を使用すると、結合対象に NULL値が含まれている場合、結果がNULLになってしまう という特性があります。
SELECT 'Hello' + NULL + 'World' AS Result;実行結果
Result
----------------
NULL NULL値が含まれると、結合全体がNULLになってしまいます。
NULLを回避するには、ISNULL() 関数を使用してNULLを空文字 ('') に変換するとよいでしょう。
SELECT 'Hello' + ISNULL(NULL, '') + 'World' AS Result;実行結果
Result
----------------
HelloWorld この方法を使うことで、NULL値を含む場合でも適切に文字列を結合することができます。
もう一点、+ 演算子を使う場合には、文字列と数値型を直接結合しようとした場合、エラーとなってしまう点にも注意しましょう!
CONCAT() 関数を使った文字列結合
SQL Server 2012 以降では、CONCAT() 関数 を使って文字列を結合できます。+ 演算子とは異なり、NULL の扱いが異なるため、より安全に文字列を連結できます。
基本的な使い方
CONCAT() は、複数の文字列を引数として渡すことで、1つの文字列に結合します。
SELECT CONCAT('Hello', ' ', 'World') AS Result;実行結果
Result
----------------
Hello World このように、シンプルな記述で文字列を結合できます。
NULL値を含む場合の動作
+ 演算子では、結合対象に NULL が含まれていると、結果が NULL になってしまいました。しかし、CONCAT() は NULL を自動的に 空文字 ('') に変換 するため、安全に結合できます。
SELECT CONCAT('Hello', NULL, 'World') AS Result;実行結果
Result
----------------
HelloWorld NULL を意識せずにそのまま使える点が、+ 演算子よりも便利なポイントです。
数値型や日付型を含めた文字列結合
CONCAT() は、数値型や日付型のデータを自動的に 文字列型に変換 して結合できます。+ 演算子のように CAST() や CONVERT() を使わなくても、エラーが発生しません。
SELECT CONCAT('注文番号: ', 1234, ', 日付: ', GETDATE()) AS Result;実行結果
Result
----------------------------
注文番号: 1234, 日付: Feb 25 2025 12:34PM このように、CONCAT() は異なるデータ型を含む文字列結合にも適しています。
STRING_AGG() を使った複数行の文字列結合
SQL Server 2017 以降では、STRING_AGG() 関数 を使うことで、複数行のデータを1つの文字列として結合 することができます。これは、グループ化されたデータをまとめて表示したい場合に非常に便利です。
基本的な使い方
STRING_AGG(列名, 区切り文字) の形式で使用し、指定した列のデータを1つの文字列に連結 できます。
例:商品名をカンマ区切りで結合する
SELECT STRING_AGG(ProductName, ', ') AS ProductList
FROM Products;実行結果
ProductList
-----------------------------------
りんご, バナナ, みかん, ぶどう このように、複数行のデータを 1つの文字列にまとめる ことができます。
まとめ
本記事では、SQL Server における文字列結合の方法を解説しました。それぞれの方法の特徴を振り返ってみましょう。
| 方法 | 特徴 | 使用可能バージョン |
|---|---|---|
+ 演算子 | 直感的に使えるが、NULL が含まれると結果が NULL になる | すべてのバージョン |
CONCAT() | NULL を空文字に変換し、安全に結合できる | SQL Server 2012 以降 |
STRING_AGG() | 複数行のデータを 1 つの文字列にまとめる | SQL Server 2017 以降 |
SQL Server のバージョンや用途に応じて、適切な方法を選びましょう!
以上、SQL Server における文字列結合の方法について解説しました。
この記事が参考になれば幸いです。
今回ご紹介したSQLServerの操作は、実務の現場でもよく使われる内容です。
もしあなたが、
「もっとこのスキルを活かせる職場に移りたい」
「SQLの知識があるのに評価されない職場でくすぶっている」
そんな思いを持っているなら、一度転職市場での評価をチェックしてみるのもアリです。

社内SEになるなら、「社内SE転職ナビ」がおすすめ

「社内SE転職ナビ」は社内SEに特化したITエンジニア専門の転職・求人サイトです。
エンジニアの社内SEの定義は、「客先常駐がないこと」

社内SEに特化しているこそ、豊富な社内SE・自社開発・情報システム求人を保有しています。
保有求人数は10,000件以上、サイト公開求人数は4,000件以上なので、
社内SEを目指している方は会員登録しておいて損はないです!
コメント