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 

你可能感兴趣的:(数据库小笔记)