MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

这篇具有很好参考价值的文章主要介绍了MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

很久没有接触Mysql了。

今天心血来潮,突然想了解一下Mysql列转行,看了一些文章,重点不清晰,遂有下文!

Mysql官网、 社区版下载( Windows版_mysql.8.0.31下载  )

概述

Mysql内部提供了列转行的三个函数,分别是:

CONCAT(str1,str2,...)

CONCAT_WS(separator,str1,str2,...)

GROUP_CONCAT(expr)

数据准备

数据如下,简单明了。

#1、查看原始数据
select * from student;  

 MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

如上图所示,3条数据,足以说明问题。 

案例解析

一、CONCAT(str1,str2,...)函数解析

首先,看到该函数的参数,str1和str2,立刻有种冲动,这两个参数应该看是任意字符串。

1、用concat函数,拼接任意字符串

select CONCAT('aaa',',','bbb') as info from dual;

 MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

 效果如图所示:concat可以用来拼接任意字符串,并自定义分隔符

2、用concat函数,把每行数据多列-->一行 

select CONCAT(s.id,',',s.name,',',s.age) as infos from student s;

MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

3、 注意事项

如果,仅仅是想把表中单列数据,转换为一行,concat函数,就显得有些力不从心了,需要用到group_concat函数,下面第三小节,会有介绍! 

二、CONCAT_WS(separator,str1,str2,...)函数解析

从语法得知,separator是分隔符,后面str1和str2等等,是拼接字段。

不难理解,该函数只需指定一次分隔符即可。 

select CONCAT_WS('#',id,name,age )  as infos from student  ;

MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

注意:比较遗憾的是,该CONCAT_WS函数依然不能让单列,转行!

术业有专攻,单例转行需下面的GROUP_CONCAT函数!

三、GROUP_CONCAT(expr)函数解析(重点)

1、单例转行

select GROUP_CONCAT(name) as names from student ;

 MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

说明:本案例是对该函数简单的演示,sql后面依然可以带where group by等条件语句。 

2、拓展

select GROUP_CONCAT('111',name) as names from student ;
select GROUP_CONCAT(name,'222') as names from student ;
select GROUP_CONCAT('111',name,'222') as names from student ;

运行结果:

111succ,111chouniu,111succ
succ222,chouniu222,succ222
111succ222,111chouniu222,111succ222

MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

四、拓展

Oracle常用的列转行

select * from emp;
--方法一:使用concat函数,该函数只能有两个参数(不可以自定义分隔符),但是它允许套用
select concat(empno,ename) from emp; 
SELECT CONCAT(CONCAT('A', 'B'),'C')FROM dual;

--可以合并任意多个列为一行
select empno || ',' ||ename from emp;

--单列合并为一行,默认分隔符为逗号,如果想制定分隔符,则需要用replace函数协助
select wm_concat(ename) from emp;    
select replace(wm_concat(ename),',','|') from emp;

MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

总结

至此,CONCATCONCAT_WSGROUP_CONCAT三个函数的使用,基本介绍清楚,当然在实际开发中,场景会复杂很多。

欣慰的是,有了这三个函数的辅助,后期实现更为复杂的行转列,也将是如虎添翼!

尾言

MySql知识点太多,后期将会推出更多精要的mysql知识点,不出则已,出必为精品,不废话!

如果觉得有用,欢迎留言、点赞、收藏!文章来源地址https://www.toymoban.com/news/detail-449284.html

到了这里,关于MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spark】concat、concat_ws函数的使用

    目录 前言/简介 实践应用 1、concat()函数 2、concat_ws()函数         在使用Spark-hive技术处理逻辑时,经常会使用concat()、和concat_ws()字符串连接函数。这两个函数在spark的用户自定义函数和hive的用户自定义函数中都存在,Spark也是支持hive用户自定义函数的。两者主要使用区别

    2024年02月15日
    浏览(85)
  • Mysql 合并多个分组。GROUP_CONCAT 函数 及其平替函数

    GROUP_CONCAT 函数用于将一个分组内的多行数据合并成一个字符串,并以指定的分隔符进行分隔。常用于需要将一个分组内的多条数据以字符串的形式展示的情况。语法如下: GROUP_CONCAT(expr [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [, expr ...]] [SEPARATOR str_val]) 其中,expr 表示要

    2024年02月02日
    浏览(53)
  • SQL Server实现group_concat函数

    情景:每个人有多张银行卡,现在需统计出每个人的银行卡并展示成一行,表单如下: 实现sql: group_concat() 函数将组中的字符串连接成为具有各种选项的单个字符串。 separator 指定在组中的值之间插入的文字值,默认 \\\' , \\\' 2.1 FOR XML PATH(\\\'\\\')函数,使结果集转为XML文档形式 2.2 转换

    2024年02月17日
    浏览(42)
  • MySql中group_concat字符长度限制

    group_concat长度限制默认是1024,有两个解决方法: 1. 彻底修改,找到MYSQL的配置文件my.ini或者my.cnf,在里面添加以下信息 group_concat_max_len = -1  # -1为最大值或填入你要的最大长度 或者自己设置group_concat_max_len = 1024000。 注意:需要重启MySQL才能生效。 2. 在客户端连上mysql,执行语

    2024年04月28日
    浏览(40)
  • mysql的group_concat字段的长度限制

    在使用group_concat进行数据分组查询的时候会出现数据只出现一部分的状况,这种是因为group_concat这个字段的字符长度不够,在信息超高这个长度的时候会自动的截取,如果想要解决这个问题的话需要进行额外的设置 修改mysql配置文件my.ini ,默认情况下是没有group concat max len项

    2024年02月13日
    浏览(43)
  • 一个mysql的group_concat导致的问题

    好久都没有写点东西了,是时候有点写东西的必要了。 去年下年底离职了,躺了几个月,最近又兜兜转转换了一家公司继续当牛马了,前段时间八股文背了好多,难受呀,不过我也趁着前段时间自己也整理了属于我自己的八股文,有好几万字吧,哈哈哈,以后就不用到处去找

    2024年02月06日
    浏览(45)
  • mysql~GROUP_CONCAT实现关系表的行转列

    GROUP_CONCAT 是 MySQL 中用于将查询结果集中的多行数据合并为单个字符串的聚合函数。它将每行数据的指定字段值连接起来,并以指定的分隔符分隔,最终返回一个包含所有值的字符串。 以下是 GROUP_CONCAT 函数的一般语法: column_name:要连接的字段名。 SEPARATOR:可选参数,用于

    2024年04月12日
    浏览(35)
  • mysql 查询的字段值太长显示不全 group_concat

    当前这个字段非常的长,在数据库看的时候也只是显示一部分内容,这是由于group_concat的group_concat_max_len参数的值太小造成的,默认值如下:  我们需要将这个值调大一点就可以解决上面这个问题了:  

    2024年02月11日
    浏览(43)
  • 【含面试】解锁MySQL group_concat的无限可能性:解决长度限制并实现高效查询

    AI绘画关于SD,MJ,GPT,SDXL百科全书 面试题分享点我直达 2023Python面试题 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象

    2024年02月04日
    浏览(73)
  • mysql 字符 1024个字符限制 cast转为varchar 不限制字符长度 最大字符长度 group_concat长度限制

    设置group_concat的最大长度然后再运行

    2024年02月16日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包