SQL Server字符串聚合拼接列值合并

STUFF字符串函数是将字符串插入到另一个字符串中。它会删除开始位置第一个字符串中的指定长度的字符,然后将第二个字符串插入到开始位置的第一个字符串中,语法如下:

STUFF(字符串/变量/列,开始位置,长度,字符串/变量/列)

姓名中间插入暱称

DECLARE @FullName VARCHAR(100)
DECLARE @Alias    VARCHAR(20)

SET @FullName = 'Jeffcky Wang'
SET @Alias = ' "Superman" '

SELECT STUFF(@FullName, CHARINDEX(' ', @FullName), 1, @Alias) AS [FullName]

姓名中间插入外号

字符串转为时间格式

DECLARE @Time VARCHAR(10)
SET @Time = '1030'

SELECT STUFF(@Time, 3, 0, ':') AS [HH:MM]

stuff时间日期格式

身份证尾号用X代替

DECLARE @CreditCardNumber  VARCHAR(20)
SET @CreditCardNumber = '370200199408103544'

SELECT STUFF(@CreditCardNumber, LEN(@CreditCardNumber) -3, 4,'XXXX') AS [Output]

身份证尾号用XXXX取代

字符串的拼接

CREATE TABLE [dbo].[types]([id] [int] NOT NULL,[type] [varchar](50));
INSERT INTO types VALUES(1,'apple')
INSERT INTO types VALUES(2,'honor')
INSERT INTO types VALUES(3,'oppo')
INSERT INTO types VALUES(3,'vivo')

STUFF最常见的用途莫过于结合FOR XML PATH对返回JSON字符串的拼接。

-- 元素前加逗号
SELECT ',' + type  FROM  types FOR XML PATH ('')

在这里插入图片描述

-- 去除最前元素的逗号
SELECT Name = STUFF((SELECT TOP 5 ',' + type FROM types FOR XML PATH('')), 1, 1, '')

去除前置逗号

字符串聚合拼接 列值合并

SELECT [id], STUFF(
( SELECT ','+ [type] 
FROM types b 
WHERE b.id = a.id 
FOR XML PATH('')),1 ,1, '') [类型]
from types a
group by [id]

字符串聚合拼接

参考连接

SQL Server之深入理解STUFF

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章