关于sql:从行中获取逗号分隔的字符串

get a comma delimited string from rows

本问题已经有最佳答案,请猛点这里访问。

在MS SQL Server中,用逗号分隔的字符串(如下所示)连接行的查询是什么?

query to delimeter string


使用STUFFFOR XML

创建和填充示例表(请在以后的问题中保存此步骤)

1
2
3
4
5
6
7
8
9
10
11
DECLARE @T AS TABLE
(
    Name VARCHAR(10)
)

INSERT INTO @T VALUES
('John'),
('Vicky'),
('Sham'),
('Anjli'),
('Manish')

查询:

1
2
3
4
5
SELECT STUFF((
    SELECT ',' + Name
    FROM @T
    FOR XML PATH('')
), 1, 1, '') AS [output];

结果:

1
2
output
John,Vicky,Sham,Anjli,Manish

假设您的列名是NAME,表名是MYTABLE,您可以使用以下查询:

1
2
3
4
5
6
7
8
9
10
11
12
DECLARE @strTemp VARCHAR(MAX)

SET @strTemp = ''

SELECT @strTemp  = @strTemp + ISNULL(NAME,'') + ','
FROM MYTABLE

--Remove last comma
SET @strTemp = SUBSTRING(@strTemp ,1,LEN(@strTemp ) -1)

--Get Result
SELECT @strTemp

可以使用以下方法筛选空记录

1
2
3
SELECT @strTemp  = @strTemp + NAME + ','
FROM MYTABLE
WHERE NAME IS NOT NULL