示例数据
假设有张员工表,表里有人姓、人命、部门三个字段,示例数据如下:
select first_name,last_name,department_id from employees limit 10;
为了更好的了解concat相关的用法,现在假设有以下两个场景
场景一:查询每个员工的全名,即人姓 + 人名
concat
可以通过concat函数,将多列的值拼接为一个字符串
select concat(first_name,last_name) from employees limit 10;
查询结果如下:
可见,使用concat函数可以将多列的值拼接为一个字符串,但如果我们想要进行分割该如何操作?可以手动的将分隔符加到concat函数里面,但比较麻烦,也可以使用concat_ws函数,下文展开.
concat_ws
可以通过concat函数,将多列的值拼接为一个字符串,第一个参数为分隔符,示例如下:
select concat_ws(',',first_name,last_name) from employees limit 10;
场景二:查询每个部门里所有的人员名字
group_concat
group_concat连接一列的多个值,通常配合group by 使用
SELECT department_id as 部门id,group_concat(last_name) as 部门内的人名 FROM employees group by department_id;