MSSQL字符串联结技巧,打造优雅SQL语句(mssql 字符串联结)
SQL Server 里的字符串连接功能可以让我们把一系列的字符串组合成一个完整的字符串,让我们的SQL语句看起来更为优雅。
一般来说,当字符串的连接数量较少,我们使用简单的 “+” 连接就可以了。
例如:
“`sql
SELECT ‘This is a ‘ + ‘string’ AS Str1
当字符串的连接数量较多时,我们需要使用MSSQL自带的函数——STUFF 和 FOR XML PATH。
前者可以基于指定的位置,将指定字符串添加到查询出的结果中;后者可以将查询出的结果用指定的字符串连接起来。
举个例子:我们有一张表
```sqlCrreate 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
而如果我们想用别的分隔符,比如 * 做分隔符,我们把上面的第二行替换一下就可以了:
```sqlSELECT @Str =STUFF ((SELECT '*'+A.name FROM T1 AS A
FOR XML PATH('')),1,1,'')SELECT @Str
运行结果是:
aaa*bbb*ccc
有了这种技巧,写出优雅的SQL语句就不是难事了!