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

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