【SQLServer】文字列を結合する方法を徹底解説!

スポンサーリンク

SQL Serverでデータを操作する際、複数のカラムの値を結合して1つの文字列として扱いたい場面が多くあります。例えば、次のようなケースです。

  • フルネームの作成(姓 + 名)
  • 住所の組み立て(都道府県 + 市区町村 + 番地)
  • 注文データの情報をまとめる(注文番号 + 商品名 + 数量)

SQL Serverでは、文字列を結合する方法として + 演算子CONCAT() 関数 などが利用できます。また、複数行のデータをまとめて1つの文字列にする場合は STRING_AGG() などのテクニックもあります。

この記事では、SQL Serverで文字列を結合するさまざまな方法を、基本的な使い方から応用テクニックまで詳しく解説していきます。

では、さっそく見ていきましょう!

+ 演算子を使った文字列結合

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 における文字列結合の方法について解説しました。
この記事が参考になれば幸いです。

コメント