MySQL实现split功能

前言

我们知道在Java和Python等主流语言的基础库中都提供了split函数,我们可以很方便的将一段字符串按照指定的字符分隔成几段字符串。 在特定的情况下我们可能也需要在MySQL查询中实现这样的功能, 而MySQL本身是不支持的,但我们可以通过下面的方法间接完成

MySQL中实现split功能

假如我们有一张员工表

id name hobby
1 张三 美食,睡觉,看书
2 李四 打游戏,健身
3 王五 旅游,美食,游泳

我们想把表中所有员工的爱好做汇总,并排重,要怎么做呢?

下面上代码

drop temporary table if exists temp;
create temporary table temp( val char(255) );
#设置group_concat最大长度,默认只支持1024,超出长度会被截取掉
SET SESSION group_concat_max_len=10240000;  
set @sql = concat("insert into temp (val) values ('", replace(( select group_concat(distinct hobby) as data from employee), ",", "'),('"),"');");
prepare stmt1 from @sql;
execute stmt1;
select distinct(val) from temp; #所有员工爱好排重后的汇总

这里只是给出思路哈, 如果有需要还可以把它封装成存储过程或者函数方便调用

你可能感兴趣的:(Database)