先上sql语句
select distinct
SUBSTRING_INDEX(SUBSTRING_INDEX(a.beam_type,',',b.help_topic_id + 1),',', -1 ) name
from fab_process_tech_test a
join mysql.help_topic b
on b.help_topic_id < (LENGTH(a.beam_type) - length(replace(a.beam_type,',','')) + 1);
我需要将fab_process_tech_test .beam_type在输出时根据逗号分割,让一条数据变成多条数据
1、需要确定最终要分割出多少条
LENGTH(a.beam_type) - length(replace(a.beam_type,',','')) + 1
这一段可以判断出该数据最终要变成几条数据,mysql.help_topic 表是一个主键help_topic_id从0开始自增的表(是mysql的一张信息表,用来存储各种注释等帮助信息)。我们需要利用其主键help_topic_id自增的特性,在join on操作之后其输出的数据量就是我们需要拆分出来的数据量。
2、获取到拆分后的字段值
SUBSTRING_INDEX(SUBSTRING_INDEX(a.beam_type,',',b.help_topic_id + 1),',', -1 )
里面的SUBSTRING_INDEX函数用于取从前数第一/二/三个逗号前面的数据,
外面的SUBSTRING_INDEX函数用于取从后数第一个逗号后面的数据