Mysql通过分隔符将字符串(列)拆分为新行

时间:2016-02-28 05:50:56

标签: mysql delimiter

我有以下字符串 156,12,99,12,14,17 有时这个字符串更长和/或更短,涉及字母和数字,例如cc,21,366,ddd。

理想的输出是 output

output

我有这个,它给了我列中的分隔数:

select
LENGTH(a.column) - LENGTH(REPLACE(a.column, ',', '')) + 1 AS numberofdelimit
FROM <mydatabase>.<mytable> as a
where a.id = 4;

我也知道这段代码会给我分隔的文本:

SUBSTRING_INDEX(a.column, ',', numbers.n)

我努力将它们放在一起将值放入新行。

1 个答案:

答案 0 :(得分:0)

好吧,如果你不再需要ID,你可以这样做:

create table `ids` (
   `id` int
);

create table `input` (
   str varchar(256)
);

insert into ids (`id`) values
   (1), (2), (3), (4), (10), (20), (30), (40);

insert into input (`str`) values ('1,2,10,30');

然后像这样匹配

select
   *
from
   input inner join ids
      on concat(',',str,',') rlike concat(',', id, ',');

但它确实要求你有一张桌子。

但这可能是一个开始。