首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server:如何删除使用XML路径合并行后的最后一个逗号

SQL Server:如何删除使用XML路径合并行后的最后一个逗号
EN

Stack Overflow用户
提问于 2014-10-30 12:16:17
回答 3查看 15.7K关注 0票数 8

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

代码语言:javascript
运行
复制
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');

此查询组合了类型,但我现在要删除最后一个逗号:

代码语言:javascript
运行
复制
SELECT top (2) 
    type + ', ' AS 'data()'
FROM  
    supportContacts
ORDER BY 
    type DESC
FOR XML PATH('')

这是当前的结果:

代码语言:javascript
运行
复制
Twitter, Email,
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-30 12:51:09

代码语言:javascript
运行
复制
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限制

票数 3
EN

Stack Overflow用户

发布于 2014-10-30 20:24:41

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

代码语言:javascript
运行
复制
select stuff((
    SELECT top (2) 
        ', ' type AS 'data()'
    FROM  
        supportContacts
    ORDER BY 
        type DESC
    FOR XML PATH('')
), 1, 2, '')

这表示“获取select的结果,并将从位置1开始的两个字符替换为零长度的字符串”。

票数 18
EN

Stack Overflow用户

发布于 2017-08-17 15:24:13

这对我很有效->

1.在数据前插入逗号

2.使用东西删除它

代码语言:javascript
运行
复制
select (stuff((
   SELECT ', '+ Name  AS 'data()' 
   FROM Table_1 
   FOR XML PATH('')),
   Count('ID')
, 1, ' '))as Result
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26644964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档