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

目录
  • MySQL用逗号进行拼接、以逗号进行分割
    • group_concat 函数
  • MySQL多行数据用逗号拼接返回一行
    • 解决方案
    • GROUP_CONCAT简单阐述
  • 总结

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 在MySQL字段中使用逗号分隔符的方法分享

    被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个字段关联的表,一定是一对多的关系 比如下面这个表结构所代表的content与tag这两个对象 复制代码 代码如下: mysql> SELECT * FROM content; +----+------+| id | tags | +----+------+| 1 | 1,2 | | 2 | 2,3 | +----+------+ 2 rows in set (0.01 sec) mysql>

  • MySQL中将一列以逗号分隔的值行转列的实现

    前言 有时会遇到没有遵守第一范式设计模式的业务表.即一列中存储了多个属性值.如下表 pk value 1 ET,AT 2 AT,BT 3 AT,DT 4 DT,CT,AT 一般有这两种常见需求(测试数据见文末) 1.得到所有的不重复的值,如 value AT BT CT DT ET SQL如下: select distinct(substring_index(substring_index(a.col,',',b.help_topic_id+1),',',-1)) from (select gr

  • MySQL将一个字段中以逗号分隔的取出来形成新的字段实现

    1例如:要把如图1的字段拆分图2 select account_id, substring_index(substring_index(a.related_shop_ids,',' ,b.help_topic_id+1),',',-1) shopid from sales_hang_account a join mysql.help_topic b on b.help_topic_id < (length(a.related_shop_ids) - length(replace(a.relate

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

    目录 MySQL用逗号进行拼接.以逗号进行分割 group_concat 函数 MySQL多行数据用逗号拼接返回一行 解决方案 GROUP_CONCAT简单阐述 总结 MySQL用逗号进行拼接.以逗号进行分割 MySQL中,把查询的结果拼接成一个字符串. group_concat 函数 用法:group_concat (待拼接对象) 输出:用逗号进行拼接后的字符串 例子: select group_concat(emp_no) as employees from dept_emp;   /* 结

  • java 将 list 字符串用逗号隔开拼接字符串的多种方法

    第一种:使用谷歌Joiner方法 import com.google.common.base.Joiner; public static <T> String parseListToStr(List<T> list){ String result = Joiner.on(",").join(list); return result; } 第二种:循环插入逗号 //java项目www.fhadmin.org public static <T> Stri

  • MySQL实现字段或字符串拼接的三种方式总结

    目录 一.CONCAT函数 1.1.拼接非空字段或字符串 1.2.拼接空(NULL)字段 二.CONCAT_WS函数 2.1.拼接非空字段或字符串 2.2.拼接空(NULL)字段 三.GROUP_CONCAT函数 3.1.默认以逗号分隔符连接 3.2.可自定义对字段去重排序和指定分隔符 3.3.group_concat的限制和设置 一.CONCAT函数 concat函数是将多个字段或字符串拼接为一个字符串:但是字符串之间没有任何分隔. concat函数官方介绍 -- CONCAT函数的语法如下:

  • js 中将多个逗号替换为一个逗号的代码

    有时候有很多逗号,这样我们就不好处理了,下面的函数就是将多个逗号替换为一个逗号,方便后面的处理. 复制代码 代码如下: <script language="javascript">  var str="asdfk,asdf34,,,,,,5345,,,,"; str=str.replace(new RegExp(',+',"gm"),',');alert(str); </script> 比较不错的一个代码: 复制代码 代码

  • JS中将多个逗号替换为一个逗号的实现代码

    这篇文章主要介绍了js 中将多个逗号替换为一个逗号的代码,需要的朋友可以参考下有时候有很多逗号,这样我们就不好处理了,下面的函数就是将多个逗号替换为一个逗号,方便后面的处理. <script language="javascript"> var str="asdfk,asdf34,,,,,,5345,,,,"; str=str.replace(new RegExp(',+',"gm"),','); alert(str); </s

  • Mysql中的concat函数(拼接函数)详解

    目录 Mysql中的concat函数(拼接函数) 概述 Mysql Concat函数 Mysql Concat_Ws函数 Mysql中的concat函数(拼接函数) 概述 很多时候,我们需要将不同地方获得的字符串拼接在一起,此时就需要使用CONCAT和CONCAT_WS函数 要连接两个或多个引用的字符串值,请将字符串放在一起,如下所示: mysql> SELECT 'MySQL ' 'String ' 'Concatenation'; +----------------------------+

  • python正则表达式去掉数字中的逗号(python正则匹配逗号)

    分析 数字中经常是3个数字一组,之后跟一个逗号,因此规律为:***,***,*** 正则式 复制代码 代码如下: [a-z]+,[a-z]? 复制代码 代码如下: import re sen = "abc,123,456,789,mnp"p = re.compile("\d+,\d+?") for com in p.finditer(sen):    mm = com.group()    print "hi:", mm    print &qu

  • Python如何将数字变成带逗号的千分位

    目录 将数字变成带逗号的千分位 在Python里实现方法如下 增加和去除数字的千位分隔符 1.去掉千分位 2.添加千分位 1. 拆分成整数部分和小数部分 2.为整数部分添加千分位 3.将整数部分和小数部分整合 将数字变成带逗号的千分位 一个很长的数字,有时候要把它变成千分位的数字,就是以三位数为一个分隔用逗号分开,比如 123,452,354 酱紫. 在Python里实现方法如下 format(12324232345, ',') Out[2]: '12,324,232,345' **注意:**输

  • 浅谈javascript运算符——条件,逗号,赋值,()和void运算符

    前面的话 javascript中运算符总共有46个,除了前面已经介绍过的算术运算符.关系运算符.位运算符.逻辑运算符之外,还有很多运算符.本文将介绍条件运算符.逗号运算符.赋值运算符.()和void运算符 条件运算符 条件运算符是javascript中唯一的一个三元运算符(三个操作数),有时直接称做'三元运算符'.通常这个运算符写成'?:',当然在代码中往往不会这么简写,因为这个运算符拥有三个操作数,第一个操作数在'?'之前,第二个操作数在'?'和':'之间,第三个操作数在':'之后 varia

  • 浅谈JS中逗号运算符的用法

    注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScript做举例. 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记录下来.后 面本人将逐步写上更多关于本书的文章. 本文的理论知识来自于JavaScript权威指南,我这里做一下整理,或者说叫笔记. 如果你的基础够好的话,完全理解不成问题,但是如果读得有些郁闷的话,可以加我的QQ:

随机推荐