暂无图片
如何在 SQL Server 中将多行中的文本连接成单个文本字符串?
我来答
分享
暂无图片 匿名用户
如何在 SQL Server 中将多行中的文本连接成单个文本字符串?

例子:

Peter
Paul
Mary

复制

有没有一种简单的方法可以把它变成一串

Peter, Paul, Mary?

复制
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
cqiwen

SQL Server 2017新增了 string_agg函数,可以轻松实现分组合并字符串,而不是用xml path,或者写个自定义 函数来实现。

语法:
STRING_AGG ( expression, separator ) [ <order_clause> ]
<order_clause> ::=
WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )

有2个参数,第1个是要合并的字段、表达式,第2个是用什么分隔符,比如:用逗号作为分隔符。
后面的order 子句,是对要合并的数据进行排序,可以升序、降序。

例:

create table test2(country varchar(10),city varchar(10));
insert into test2 values ('中国','台北');
insert into test2 values ('中国','香港');
insert into test2 values ('中国','上海');
insert into test2 values ('日本','东京');
insert into test2 values ('日本','大阪');

select * from test2;

COUNTRY    CITY
---------- -------------------
中国       台北
中国       香港
中国       上海
日本       东京
日本       大阪

SELECT
        country,
        STRING_AGG (city, ',') WITHIN GROUP (ORDER BY city) city
FROM test2 GROUP BY country;

COUNTRY    CITY
---------- ---------------------
中国       上海,台北,香港
日本       东京,大阪

复制
暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
从mysql迁移dm8时,发现dm8不支持默认值为当前时间的设置(default CURRENT_TIMESTAMP),请问如何处理?
回答 1
已采纳
您好:这个问题达梦官方已给出解决方案供参考。MySQL的字段可以定义CURRENTTIMESTAMP类型,实际后台是触发器帮助更新行数据的时间戳,达梦可以用相同的触发器原理仿真,就是需要一些修改的工作
MYSQL 是否有锁设置并发更新数?
回答 1
innodbthreadconcurrency,如果设置为0,则表示不限制,mysql数据库服务器会尽可能地处理请求非0的话,表示并发数,建议设置小于等于cpu核数;
MySQL数据库如何分析一条SQL语句的执行性能?需要关注哪些信息?
回答 1
已采纳
使用EXPLAN命令,通过观察TYPE列,就可以知道是否使用了全表扫描,同时也可以知道索引的使用形式,通过观察KEY可以知道使用了哪个索引,通过观察KEYLEN可以知道索引是否使用完成,通过观察ROW
mysql 可以指定用户默认的 通用表空间 吗?
回答 2
已采纳
建立一个表空间,如果想其他建表都用这个表空间,建表时候指定一下,否则不会用。
mysql哪些测试库中有blob字段?如何查看某个库中是否有blob自带的表?
回答 1
我也想知道
开源的MySQL性能监控工具都有哪些?
回答 4
zabbix
slowlog,general log 如何按天切割?
回答 1
MySQL本身没有提供内置的按天切割slowlog和generallog的功能,只能通过其他第三方的工具或自己写脚本来实现。另外一个思路:可以考虑将慢查询日志写入到表中,而不是写入到日志文件中,写入到
关于TDsql数据库的问题
回答 1
是否能满足3年内历史页面快速查询。分区表是将数据分散到不同的物理存储中,查询时只需要查找与查询条件匹配的分区,从而减少查询的数据量,提高查询速度。因此,按月分区表可以满足3年内的历史页面快速查询的需求
ERROR 2003 (HY000):Can’t connect to MySQL server on 'localhost' (10061)
回答 1
已采纳
mysql未启动?,则启动即可:mac端:brewservicesstartmysqlmysql.serverstartcentos端:systemctlstartmysqld.serviceserv
MySQL开启审计日志问题
回答 2
推荐用第三方开源审计插件:libauditplugin.so来做mysql的审计工作