MySQL实现用逗号进行拼接、以逗号进行分割


Posted in MySQL onDecember 24, 2022

MySQL用逗号进行拼接、以逗号进行分割

MySQL中,把查询的结果拼接成一个字符串。

group_concat 函数

用法:group_concat (待拼接对象)

输出:用逗号进行拼接后的字符串

例子:

select group_concat(emp_no) as employees from dept_emp;
 
/*
结果:
employees                                                         |
+-------------------------------------------------------------------+
| 10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10010 |
+-------------------------------------------------------------------+
*/

可以使用MySQL中的字符串拆分函数实现:

substring_index(str,delim,count)

说明:str: 被分割的字符串; delim: 分隔符; count: 分割符出现的次数

例子:

对于字符串 “209755,209756,209757” ,设置delim为 “,”,count为1,就会返回 “209755”;

其它参数不变,count为2,就会返回 “209755,209756”;其它参数不变,count为-1,就会返回 “209757”。

select colnum_name
,(select substring_index(substring_index(bill_ids,',',1),',',-1)) as bill_id1
,(select substring_index(substring_index(bill_ids,',',2),',',-1)) as bill_id2
,(select substring_index(substring_index(bill_ids,',',3),',',-1)) as bill_id3
from table_name;

若不知道要分割的字段究竟有几个值(如可能某些行就1个值,某些有6个),可以考虑根据具有最多值的数量来选择使用多少条

(select substring_index(substring_index(bill_ids,’,’,第几个值),’,’,-1))语句,但是会有问题(待解决)

例子:

原表
1
2,3,4
5,6
分割的结果
1 1 1
2 3 4
5 6 6

MySQL多行数据用逗号拼接返回一行

解决方案

先说解决办法,这里使用的是 GROUP_CONCAT 函数,先来实例:

SELECT GROUP_CONCAT( `name` SEPARATOR ',' ) FROM uim_user 

这样返回的多行数据会合并成一行,并且用逗号分割返回.

GROUP_CONCAT简单阐述

使用语法:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

一般与group by 分组一起使用,如果不分组默认返回一行

而分组后会把相同分组类型的数据返回一行,并且可使用分割符号分割,去重,排序等操作

简单实例:

这里是按照部门分组,这样同一个部门的人会返回一行并且用逗号分割

SELECT group_concat( distinct(name) SEPARATOR ',' ) name FROM uim_user group by dept_id

ps:开发中会有很多种需要合并结果集的情况,比如要查询小明这个同学所有科目分数返回一行,这样使用来达到返回数据的要求。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
MySQL中存储时间的最佳实践指南
Jul 01 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
mysql sock 文件解析及作用讲解
Jul 15 MySQL
MySQL 原理与优化之原数据锁的应用
Aug 14 MySQL
MySQL数据管理操作示例讲解
Dec 24 #MySQL
MySQL深分页问题解决思路
Dec 24 #MySQL
DQL数据查询语句使用示例
Dec 24 #MySQL
mysql数据库如何转移到oracle
Dec 24 #MySQL
mysql序号rownum行号实现方式
Dec 24 #MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 #MySQL
Mysql如何查看是否使用到索引
Dec 24 #MySQL
You might like
php中通过curl smtp发送邮件
2012/06/05 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
python list语法学习(带例子)
2013/11/01 Python
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
python3.x实现base64加密和解密
2019/03/28 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
pymysql 开启调试模式的实现
2019/09/24 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
Django 批量插入数据的实现方法
2020/01/12 Python
Python 中如何写注释
2020/08/28 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
《自然之道》读后感3篇
2019/12/17 职场文书