首页 > 数据库 >浅析MySQL中concat以及group_concat的使用

浅析MySQL中concat以及group_concat的使用

时间:2023-02-23 14:12:51浏览次数:33  
标签:group name 浅析 分隔符 null id concat

说明:

本文中使用的例子均在下面的数据库表tt2下执行:

 

一、concat()函数
1、功能:将多个字符串连接成一个字符串。

2、语法:concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

3、举例:

例1:select concat (id, name, score) as info from tt2;

中间有一行为null是因为tt2表中有一行的score值为null。

例2:在例1的结果中三个字段id,name,score的组合没有分隔符,我们可以加一个逗号作为分隔符:

这样看上去似乎顺眼了许多~~

但是输入sql语句麻烦了许多,三个字段需要输入两次逗号,如果10个字段,要输入九次逗号...麻烦死了啦,有没有什么简便方法呢?——于是可以指定参数之间的分隔符的concat_ws()来了!!!


二、concat_ws()函数
1、功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)

2、语法:concat_ws(separator, str1, str2, ...)

说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

3、举例:

例3:我们使用concat_ws()将 分隔符指定为逗号,达到与例2相同的效果:

例4:把分隔符指定为null,结果全部变成了null:

 

三、group_concat()函数
前言:在有group by的查询语句中,select指定的字段要么就包含在group by语句的后面,作为分组的依据,要么就包含在聚合函数中。(有关group by的知识请戳:浅析SQL中Group By的使用)。

例5:

该例查询了name相同的的人中最小的id。如果我们要查询name相同的人的所有的id呢?

当然我们可以这样查询:

例6:

但是这样同一个名字出现多次,看上去非常不直观。有没有更直观的方法,既让每个名字都只出现一次,又能够显示所有的名字相同的人的id呢?——使用group_concat()

1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

3、举例:

例7:使用group_concat()和group by显示相同名字的人的id号:

例8:将上面的id号从大到小排序,且用'_'作为分隔符:

例9:上面的查询中显示了以name分组的每组中所有的id。接下来我们要查询以name分组的所有组的id和score:

 

————————————————
原文链接:https://blog.csdn.net/Mary19920410/article/details/76545053

标签:group,name,浅析,分隔符,null,id,concat
From: https://www.cnblogs.com/DDDJ/p/17147729.html

相关文章

  • 浅析无人值班变电站的电力运维云平台的维护
    罗轩志 安科瑞电气股份有限公司上海嘉定 201801 摘要:文结合本地区变电站实际运行情况,主要就无人值班变电站的运行、管理、维护方面,作出简要论述。关键词:变电站;无人值班......
  • pandas数据合并之concat
    数据合并concat#concat函数#参数解释concat(objs:Iterable[NDFrame]|Mapping[HashableT,NDFrame],axis:Axis=0,join:str="outer",#设置函数......
  • 万字长文浅析Java集合中的排序算法
    作者:京东物流秦彪1. 引言排序是一个Java开发者,在日常开发过程中随处可见的开发内容,Java中有丰富的API可以调用使用。在Java语言中,作为集合工具类的排序方法,必定要做到通......
  • GroupJoin
    场景:两个库存表,一个是入库明细,一个是出库明细,两个库存表汇总得出剩余可用库存数数据准备:入库明细表CREATETABLEInStockInventoryEnterItem(IdintNOTNULLAU......
  • openfeign源码浅析
    问题:1.@FeignClient怎么解析的。2.@FeignClient注解的接口放到spring容器里存的是什么。3.调用@FeignClien接口的方法是怎么执行的。 1.@FeignClient怎么解析的?首先......
  • floor报错注入浅析
    常见报错语句:selectcount(*),(floor(rand(0)*2))xfrominformation_schema.tablesgroupbyx;1通过concat函数连接注入语句与floor(rand(0)*2)函数,实现将注入结果与报......
  • 浅析高校能耗及节能管理
    摘要:高校能源管理是高校治理体系和高校后勤保障的重要组成部分。利用数据统计等手段对蚌埠医学院近年来的能源使用情况进行统计分析,通过横向及纵向对比,结合国家相关政策法......
  • 浅析35kV变电站综合自动化的改造方案
    罗轩志安科瑞电气股份有限公司上海嘉定201801 摘要:35kV变电站微机综合自动化系统的改造,对于实现电网调度自动化和现场运行管理现代化,提高电网的安全和经济运行水平起到......
  • 浅析智能消防应急照明和疏散指示系统在工业建筑项目上的应用
    罗轩志安科瑞电气股份有限公司上海嘉定201801摘要:随着我国社会经济的迅猛发展与城市化建设进程的加快,大型城市综合体建筑越来越多,随之而来的消防安全管理问题不容忽视。智......
  • 浅析物联网技术在公共建筑能源管理系统中的应用
    罗轩志安科瑞电气股份有限公司上海嘉定201801摘要:在能源形势紧张的大趋势下,高能耗的大型公共建筑能源管理系统的建设逐渐受到重视,以物联网技术及基础的建筑能源管理平台可......