MSSQL字符串联结技巧,打造优雅SQL语句(mssql 字符串联结)

SQL Server 里的字符串连接功能可以让我们把一系列的字符串组合成一个完整的字符串,让我们的SQL语句看起来更为优雅。

一般来说,当字符串的连接数量较少,我们使用简单的 “+” 连接就可以了。

例如:

“`sql

SELECT ‘This is a ‘ + ‘string’ AS Str1


当字符串的连接数量较多时,我们需要使用MSSQL自带的函数——STUFF 和 FOR XML PATH。

前者可以基于指定的位置,将指定字符串添加到查询出的结果中;后者可以将查询出的结果用指定的字符串连接起来。

举个例子:我们有一张表

```sql
Crreate Table T1 (id int,name varchar(50))
Insert into T1 values (1,'aaa')
Insert into T1 values (2,'bbb')
Insert into T1 values (3,'ccc')

现在需要将表中所有name列以‘|’为分隔符连接起来,放到一个变量中,希望生成的结果是“aaa|bbb|ccc”

我们可以使用STUFF函数和FOR XML path 联结使用:

“`sql

DECLARE @Str NVARCHAR(500)

SELECT @Str =STUFF ((SELECT ‘|’+A.name FROM T1 AS A

FOR XML PATH(”)),1,1,”)

SELECT @Str


运行结果是:
aaa|bbb|ccc
而如果我们想用别的分隔符,比如 * 做分隔符,我们把上面的第二行替换一下就可以了:

```sql
SELECT @Str =STUFF ((SELECT '*'+A.name FROM T1 AS A
FOR XML PATH('')),1,1,'')
SELECT @Str

运行结果是:

aaa*bbb*ccc

有了这种技巧,写出优雅的SQL语句就不是难事了!


数据运维技术 » MSSQL字符串联结技巧,打造优雅SQL语句(mssql 字符串联结)