这种要从1行变成多行怎么处理?

这种要从1行变成多行怎么处理?

 

这种要从1行变成多行怎么处理?

create table #t (a varchar(100),b varchar(100))

 

insert into #t(a,b,c) values ('a1,b4,c1,d5,e8','张三,李四,王五,赵六,吴七',‘测试数据’)

 

a1,b4,c1,d5,e8    张三,李四,王五,赵六,吴七    测试数据
 

想得到

第一列            第二列           第三列

a1                    张三             测试数据

b4                   李四              测试数据

c1                   王五              测试数据

d5                   赵六              测试数据

e8                   吴七              测试数据

一行转多行,根据其中某列的值,以逗号分割:
如果是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;
初始数据查询结果:

img

转多行后效果:

img

以上是sql实现。如果解决了你的问题请采纳。您的肯定是我回答问题的动力。如果需要java后端的实现请回复我,我在整理给你。谢谢!