SQL Server:如何在使用XML Path组合行后删除最后一个逗号

时间:2014-10-30 04:16:17

标签: sql sql-server for-xml-path

我找到了一种方法将多行合并为一行,以逗号分隔,但现在我想删除最后一个逗号。

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,

3 个答案:

答案 0 :(得分:11)

虽然你已经有了答案,但你会看到的另一个常见习语是:

select stuff((
    SELECT top (2) 
        ', ' type AS 'data()'
    FROM  
        supportContacts
    ORDER BY 
        type DESC
    FOR XML PATH('')
), 1, 2, '')

这说"取结果选择并用位置为零的字符串"替换从位置1开始的两个字符。

答案 1 :(得分:5)

这适用于我 - >

1.在数据前插入逗号

2.使用东西将其移除

// transfer data from `Worker` instance
self.postMessage(data.buffer, [data.buffer]) // where `data` is an `ArrayBuffer` 

答案 2 :(得分:4)

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限制