我找到了一种将多行合并为一行的方法,行之间用逗号分隔,但现在我想删除最后一个逗号。
CREATE TABLE supportContacts
(
id int identity primary key,
type varchar(20),
details varchar(30)
);
INSERT INTO supportContacts (type, details)
VALUES ('Email', 'admin@sqlfiddle.com'),
('Twitter', '@sqlfiddle');此查询组合了类型,但我现在要删除最后一个逗号:
SELECT top (2)
type + ', ' AS 'data()'
FROM
supportContacts
ORDER BY
type DESC
FOR XML PATH('')这是当前的结果:
Twitter, Email,发布于 2014-10-30 12:51:09
declare @BigStrRes8K nvarchar(4000)
SELECT @BigStrRes8K = ( SELECT top (2) [type] + ', ' AS 'data()'
FROM supportContacts
ORDER BY type DESC
FOR XML PATH('') )
SELECT LEFT(RTRIM(@BigStrRes8K), ( LEN(RTRIM(@BigStrRes8K))) - 1) as FinalNoComma在我控制渲染代码的地方,我永远不会这么做。我会教调用者处理尾随的逗号。此外,您还必须考虑到空值和SQL行的4K或8K限制
发布于 2014-10-30 20:24:41
虽然你已经有了答案,但你会看到另一个常见的成语是:
select stuff((
SELECT top (2)
', ' type AS 'data()'
FROM
supportContacts
ORDER BY
type DESC
FOR XML PATH('')
), 1, 2, '')这表示“获取select的结果,并将从位置1开始的两个字符替换为零长度的字符串”。
发布于 2017-08-17 15:24:13
这对我很有效->
1.在数据前插入逗号
2.使用东西删除它
select (stuff((
SELECT ', '+ Name AS 'data()'
FROM Table_1
FOR XML PATH('')),
Count('ID')
, 1, ' '))as Resulthttps://stackoverflow.com/questions/26644964
复制相似问题