MySQL--字符串拼接函数concat、concat_ws与神奇字符串函数group_concat

MySQL--字符串拼接函数concat、concat_ws与神奇字符串函数group_concat


      更多关于数据库知识请加关注哟~~。若需联系博主请私信或者加博主联系方式:
      QQ:3327908431
      微信:ZDSL1542334210

        前言:MySQL神奇字符串拼接函数**

1、concat与concat_ws语法

        顾名思义,concat就是连接的意思,就是将两个字符串拼接起来,同样concat_ws也是拼接字符串,但是它可以指定用什么字符拼接,语法为:

concat(<字符串1>,<字符串2>,<字符串3>,...);
concat_ws('-',<字符串1>,<字符串2>,<字符串3>,...); #以'-'作为拼接的字符

2、group_concat语法

        group_concat函数返回一个字符串结果,该结果由分组中的值连接组合而成,当然同时它也可以完成concat函数功能,但是它是利用Separator指定分隔符。

group_concat(<要连接的字段> <Order by asc/desc排序字段> <Separator '分隔符'>)

3、创建表格

创建学生得分表scores

create table scores (s_id varchar(5),
    c_id varchar(3),score float);
    
insert into scores values 
("001","01",135),
("005","01",120),
("003","01",110),
("002","01",90),
("005","02",140),
("001","02",125.5),
("004","02",100),
("006","02",90),
("002","03",102),
("005","03",100.6),
("001","03",100),
("003","03",95.6),
("004","03",83),
("003","02",80),
("006","03",79.5);

4、题目部分

题目一:将字符串’Hello ','MySQL!'拼接起来

select concat('Hello ','MySQL!');   #法一
select group_concat('Hello ','MySQL!');   #法二
select group_concat('Hello ','MySQL!' separator '-');   #法三
# 以上三个答案都是:
Hello MySQL!

题目二:将字符串’Hello ','MySQL!'拼接起来,用‘~’做为分隔符

select concat_ws('~','Hello','MySQL!');
# 答案为:
Hello~MySQL!

题目三:从scores表中查找没位同学的课程号并且将其连接起来

select group_concat(c_id separator '-') from scores;
# 答案:
01-01-01-01-02-02-02-02-03-03-03-03-03-02-03

题目四:从scores表中查找每位同学的课程号并且按照降序将其连接起来

select group_concat(c_id order by c_id desc separator '-') from scores;
# 答案:
03-03-03-03-03-03-02-02-02-02-02-01-01-01-01

题目五:查找和001同学学的课程完全一样的学生信息

select * from stu left join scores on stu.s_id=scores.s_id  
group by stu.s_id having group_concat(c_id order by c_id) =
(select group_concat(c_id order by c_id) from scores where s_id=001); # 法二

select * from stu where s_id in(select s_id from 
(select s_id,group_concat(c_id order by c_id)a1 from scores group by s_id)aa,
(select group_concat(c_id order by c_id)a2 from scores where s_id=001)bb where aa.a1=bb.a2);    # 法二
# 答案:
001	李华	男	23	1996-8-16	001	02	125.5
003	赵敏	女	23	1990-5-26	003	01	110
005	朱亚军	男	25	1999-8-16	005	01	120
# 法二难度较高,利用多重子查询,供大家参考,若不理解的伙伴可关注我后私信博主。

        总结:为什么说group_concat是一个神奇函数呢?因为在MySQL中如果我们要在列表t1中创建一个字段,命令为,alter table t1 add k1,add k2。可以看到当添加两个字段还好,但要是添加10个呢?100个呢?1000个呢?所以此时,我们就需要使用存储过程和group_concat函数批量生成我们需要的多个字段,具体内容请持续关注。

5、文末彩蛋–轻松一刻

        不知道大家有没有看新闻,这不就前几天嘛,新闻上说中国的语言博大精深,说实话我非常赞同这种说法,因为在我朋友小熊呢就发生过类似尴尬的事情,有朋友会问我说:“啥事呢?”,其实我也不愿意回答但是大家都问呢我就带来一段我朋友小熊的故事,哈哈哈。这不昨天嘛,国庆节然后我和小熊还有他女朋友一起坐地铁,他媳妇呢就发现他一直玩手机, 于是他媳妇说到:“熊哥,一个如花似玉的老婆坐在你身边,你却一直玩手机这样真的好吗?” 结果小熊的回答让我傻眼了观众朋友们,他是这样说的:“我只是觉得在公共场所玩老婆呢不太合适…”然后他一说结束嘛,地铁上所有的人都笑了哈哈哈哈…然后我为了缓解尴尬气氛呢就急中生智想让他媳妇和我一起玩游戏,然后我说到:“嫂子,别怕,咱两一起玩…”就是这么个情况嘛。

       今天到这里就结束了哟//每篇文章都有文末彩蛋–轻松一刻哟~加关注学习更多MySQL知识!谢谢观看,我是Jetuser-data

链接: [https://blog.csdn.net/L1542334210]
CSND:L1542334210
在这里插入图片描述
祝大家工作顺利!阖家欢乐!

发布了29 篇原创文章 · 获赞 53 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/L1542334210/article/details/102166659
今日推荐