MYSQL 字符串拼接:CONCAT, CONCAT_WS, GROUP_CONCAT

以成绩表为例

一个学生有多门成绩,将成绩拼接起来

1. CONCAT(str1,str2,...)

连接字符串(有一个参数为null,则返回null)

SELECT  CONCAT(name,chinese) FROM grade

结果:xiaoming86

这样拼接不直观,我们给他加上逗号分隔

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

以指定分隔符连接字符串(concat with separator)(有一个参数(包括separator)为null,则返回null)

SELECT CONCAT_WS(',',name,chinese) FROM user_info
结果:xiaoming,86

3. GROUP_CONCAT(字段 order by 字段 separator  '分隔符')

将GROUP BY产生的同一个分组中的值连接起来,返回一个字符串结果。

eg. 一个学生参加过很多次考试,将这个学生所有考试的语文成绩查询显示出来

SELECT name, GROUP_CONCAT(chinese) ORDER BY time SEPARATOR '/') FROM grade GROUP BY name
结果:xiaoming 86,90,60,90

分隔符不写时默认为逗号

eg. 一个学生参加过很多次考试,将这个学生所有考试的语文,数学,英语成绩以时间顺序查询显示出来,科目之间以“-”分隔,成绩间“,”分隔,姓名和成绩以"/"分隔

SELECT CONCAT_WS('/',name,GROUP_CONCAT(CONCAT_WS('-',chinese,math,english) ORDER BY time)) FROM grade GROUP BY name
结果: xiaoming/80-60-90,50-60-40,60-60-90,89-39-90 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值