一行转多行,根据其中某列的值,以逗号分割:
如果是sql语句:
create table test100 (a varchar(100),b varchar(100),c varchar(100));
insert into test100(a,b,c) values ('a1,b4,c1,d5,e8','张三,李四,王五,赵六,吴七','测试数据');
-- 创建一个序列表(仅有一个字段:存储序列 1-1000),如下:
create table var_index (id varchar(20));
-- 我是示例只建了1到10
insert into var_index(id) values ('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10');
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(C.a, ',', G.ID ), ',',-1 ) IDS ,
SUBSTRING_INDEX(SUBSTRING_INDEX(C.b, ',', G.ID ), ',',-1 ) IDSs,
C.c
FROM
test100 C
left JOIN var_index G ON G.ID <= (LENGTH(C.a)-LENGTH(REPLACE (C.a,',', '')) + 1)
where
1=1;
初始数据查询结果:
转多行后效果:
以上是sql实现。如果解决了你的问题请采纳。您的肯定是我回答问题的动力。如果需要java后端的实现请回复我,我在整理给你。谢谢!