+=(字符串串联赋值)(Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

将两个字符串串联起来并将一个字符串设置为运算结果。 例如,如果变量 @x 等于 'Adventure',则 @x += 'Works' 会接受 @x 的原始值,将 'Works' 添加到该字符串中并将 @x 设置为该新值 'AdventureWorks'。

Transact-SQL 语法约定

语法

expression += expression  

注意

若要查看 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. 使用 += 运算符进行串联时的计算顺序

以下示例将多个字符串串联成一个长字符串,然后尝试计算最终字符串的长度。 此示例演示使用串联运算符时的计算顺序和截断规则。

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)