首页 > 数据库 > SQL > 正文

SQL合并多行文本方案_SQL将多行转单行示例

舞夢輝影
发布: 2025-12-23 22:21:09
原创
450人浏览过
SQL中多行转单行需用聚合函数拼接字符串:MySQL用GROUP_CONCAT(),PostgreSQL用STRING_AGG(),SQL Server 2017+用STRING_AGG()、旧版用FOR XML PATH,Oracle用LISTAGG();均需先分组再聚合,并注意分隔符、排序、去重及溢出处理。

sql合并多行文本方案_sql将多行转单行示例

SQL中将多行文本合并为单行,核心是使用聚合函数配合字符串连接功能。不同数据库语法略有差异,但思路一致:分组后把同一组的多行值拼成一个字符串。

MySQL:用GROUP_CONCAT()最直接

MySQL原生支持GROUP_CONCAT(),可指定分隔符、去重、排序和长度限制。

  • 基础用法:SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM users WHERE dept = 'tech';
  • 带排序和去重:GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR ' | ')
  • 注意默认最大长度为1024,超长会被截断;可通过SET SESSION group_concat_max_len = 10000;临时调整

PostgreSQL:STRING_AGG()是标准方案

PostgreSQL推荐用STRING_AGG(expression, delimiter),功能全面且符合SQL标准。

  • 简单拼接:SELECT STRING_AGG(name, ', ') FROM employees WHERE team = 'backend';
  • 支持排序:STRING_AGG(name, ' → ' ORDER BY hire_date)
  • 可嵌套COALESCE处理NULL:STRING_AGG(COALESCE(name, 'unknown'), ', ')

SQL Server:STRING_AGG()(2017+)或FOR XML(旧版)

SQL Server 2017起支持STRING_AGG(),写法类似PostgreSQL;2016及更早版本常用FOR XML PATH技巧。

动易网上商城管理系统 2006 Sp6 Build 1120 普及版
动易网上商城管理系统 2006 Sp6 Build 1120 普及版

将产品展示、购物管理、资金管理等功能相结合,并提供了简易的操作、丰富的功能和完善的权限管理,为用户提供了一个低成本、高效率的网上商城建设方案包含PowerEasy CMS普及版,主要功能模块:文章频道、下载频道、图片频道、留言频道、采集管理、商城模块、商城日常操作模块500个订单限制(超出限制后只能查看和删除,不能进行其他处理) 无订单处理权限分配功能(只有超级管理员才能处理订单)

动易网上商城管理系统 2006 Sp6 Build 1120 普及版 0
查看详情 动易网上商城管理系统 2006 Sp6 Build 1120 普及版
  • 新版(推荐):SELECT STRING_AGG(name, '; ') FROM products GROUP BY category;
  • 旧版兼容写法:SELECT STUFF((SELECT '; ' + name FROM t2 WHERE t2.category = t1.category FOR XML PATH('')), 1, 2, '') FROM (SELECT DISTINCT category FROM t2) t1
  • STUFF()用来删掉开头多余的分隔符

Oracle:LISTAGG()为主力,注意12c后支持ON OVERFLOW

LISTAGG()是Oracle专用函数,语法清晰,但需注意溢出处理。

  • 基本形式:SELECT LISTAGG(name, ', ') WITHIN GROUP (ORDER BY id) FROM staff WHERE role = 'dev';
  • 防止超长截断(12c+):LISTAGG(name, ', ') WITHIN GROUP (ORDER BY id) ON OVERFLOW TRUNCATE '...' WITH COUNT
  • 若未指定WITHIN GROUP会报错,顺序必须显式声明

基本上就这些。选哪个函数,主要看你用的数据库版本。只要记住“先分组、再聚合、最后拼串”,再配上对应函数,多行转单行就不复杂但容易忽略细节。

以上就是SQL合并多行文本方案_SQL将多行转单行示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号