+= (文字列連結代入) (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

2 つの文字列を連結し、その結果の文字列を演算の結果に設定します。 たとえば、変数 @x が 'Adventure' である場合、@x += 'Works' は @x の元の値を取得し、その文字列に 'Works' を追加して、@x に 'AdventureWorks' という新しい値を設定します。

Transact-SQL 構文表記規則

構文

expression += expression  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

式 (expression)
任意の文字データ型の任意の有効なです。

戻り値の型

変数に対して定義されているデータ型を返します。

解説

SET @v1 += 'expression' は SET @v1 = @v1 + ('expression') と同じです。 また、SET @v1 = @v2 + @v3 + @v4 は SET @v1 = (@v2 + @v3) + @v4 と同じです。

+= 演算子を変数なしで使用することはできません。 たとえば、次のコードはエラーになります。

SELECT 'Adventure' += 'Works'  

A. += 演算子を使用した連結

次の例では、+= 演算子を使用して文字列を連結しています。

DECLARE @v1 VARCHAR(40);  
SET @v1 = 'This is the original.';  
SET @v1 += ' More text.';  
PRINT @v1;  

結果セットは次のようになります。

This is the original. More text.

B. += 演算子を使用して連結するときの評価の順序

次の例では、複数の文字列を連結して 1 つの長い文字列を形成し、最終的な文字列の計算を試行します。 この例では、連結演算子を使用するときの評価順序と切り捨てルールを示します。

DECLARE @x VARCHAR(4000) = REPLICATE('x', 4000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
DECLARE @y VARCHAR(max);
 
SET @y = '';
SET @y += @x + @z;
SELECT LEN(@y) AS Y; -- 8000
 
SET @y = '';
SET @y = @y + @x + @z;
SELECT LEN(@y) AS Y; -- 12000
 
SET @y = '';
SET @y = @y +(@x + @z);
SELECT LEN(@y) AS Y; -- 8000
-- or
SET @y = '';
SET @y = @x + @z + @y;
SELECT LEN(@y) AS Y; -- 8000
GO

結果セットは次のようになります。

Y       
------- 
8000 
 
(1 row(s) affected) 
 
   
Y       
------- 
12000 
 
(1 row(s) affected) 

Y       
------- 
8000 
 
(1 row(s) affected) 
 
Y       
------- 
8000 
 
(1 row(s) affected)

参照

演算子 (Transact-SQL)
+= (加算代入) (Transact-SQL)
+ (文字列連結) (Transact-SQL)