一、字符函数
(1)字符拼接
字符拼接–concat()
拼接字符串并作为列输出
语法:concat(str1, str2,...)
# 查询学生表中的数据,并将id、nam、score三字段拼接
select concat (id, name, score) as info from student;
指定分隔符拼接– concat_ws()
拼接字符串并作为列输出,指定字符串之间的分隔符
语法:concat_ws(separator, str1, str2, ...)
select concat_ws(',',id,name) s from student;
注:把分隔符指定为null,结果全部变成了null
对同字段进行分组拼接–group_concat()
语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
与concat_ws()
的区别,concat_ws()
用于不同字段;group_concat()
用于同一字段,多用于分组查询
# 查询出所有user_id为1的数据,并将所有cargo_name以“,”作为分隔符拼接
select group_concat(o.cargo_name separator ',') a from t_order o where o.user_id=1
# 查询出所有user_id为1的数据,并以user_id倒序的方式将所有cargo_name以“,”作为分隔符拼接
select group_concat(o.cargo_name order by o.user_id desc separator ',') a from t_order o
配合分组查询
select user_id,group_concat(o.cargo_name separator ',') cargo from t_order o group by o.user_id
user_id cargo
1 苹果,梨,菠萝
2 菠萝,西瓜
3 南瓜
多表联查的使用
select u.id,u.name,(
select group_concat(cargo_name separator ',') a
from t_order o
where o.user_id=u.id
) cargos
from t_user u
id name cargos
1 张三 苹果,梨,菠萝
2 李四 菠萝,西瓜
3 王五 南瓜