将一列的值连接到单个文本
concatenate values of one column to single text
我的专栏是这样的:
col1
玛丽
杰克
约翰
我需要这样的东西:
玛丽、杰克、约翰
我使用 "For XML PATH" 做到了,但问题是该段在 SQL 服务器视图中不起作用,
还有其他方法可以连接一列吗?
尝试使用 SQL COALESCE 表达式将您的列值转换为逗号分隔的字符串。
这是您需要做的。
DECLARE @test TABLE (
SampleCol varchar(50)
)
INSERT INTO @Test
VALUES ('Test')
INSERT INTO @Test
VALUES ('Test 1')
INSERT INTO @Test
VALUES ('Test 2')
INSERT INTO @Test
VALUES ('Test 3')
INSERT INTO @Test
VALUES ('Test 4')
DECLARE @aa varchar(200)
SET @aa = ''
SELECT
@aa =
COALESCE(CASE
WHEN @aa = '' THEN SampleCol
ELSE @aa + ',' + SampleCol
END
, '')
FROM @test
SELECT
@aa
这里是完整的SQLFIDDLE
试试这个:
DECLARE @tbl TABLE(col1 VARCHAR(10));
INSERT INTO @tbl VALUES('Mary'),('Jack'),('John');
SELECT
STUFF
(
(
SELECT ', ' + col1
FROM @tbl
FOR XML PATH('')
)
,1,2,'')
我的专栏是这样的:
col1
玛丽
杰克
约翰
我需要这样的东西: 玛丽、杰克、约翰
我使用 "For XML PATH" 做到了,但问题是该段在 SQL 服务器视图中不起作用, 还有其他方法可以连接一列吗?
尝试使用 SQL COALESCE 表达式将您的列值转换为逗号分隔的字符串。
这是您需要做的。
DECLARE @test TABLE (
SampleCol varchar(50)
)
INSERT INTO @Test
VALUES ('Test')
INSERT INTO @Test
VALUES ('Test 1')
INSERT INTO @Test
VALUES ('Test 2')
INSERT INTO @Test
VALUES ('Test 3')
INSERT INTO @Test
VALUES ('Test 4')
DECLARE @aa varchar(200)
SET @aa = ''
SELECT
@aa =
COALESCE(CASE
WHEN @aa = '' THEN SampleCol
ELSE @aa + ',' + SampleCol
END
, '')
FROM @test
SELECT
@aa
这里是完整的SQLFIDDLE
试试这个:
DECLARE @tbl TABLE(col1 VARCHAR(10));
INSERT INTO @tbl VALUES('Mary'),('Jack'),('John');
SELECT
STUFF
(
(
SELECT ', ' + col1
FROM @tbl
FOR XML PATH('')
)
,1,2,'')