如何将逗号分隔的字符串转换为单列?

时间:2018-04-10 04:34:44

标签: php mysql sql phpmyadmin

表:

id    brand    group
1     adidas    1,2
2     puma      1
3     asianone  1,2,3

我想要的结果是什么:

id    brand    group
1     adidias  1
2     adidias  2
3     puma     1
4     asianone 1
5     asianone 2
6     asianone 3

其中id是autoincrement ..

3 个答案:

答案 0 :(得分:2)

SELECT @id:=@id+1 AS id,
       `brand`,
       `group` 
FROM
(SELECT
  `id`, 
  `brand`,
   SUBSTRING_INDEX(SUBSTRING_INDEX(`group`, ',', n.digit+1), ',', -1) AS `group`
FROM
  Table1
  INNER JOIN
  (SELECT 0 AS digit 
   UNION ALL SELECT 1 
   UNION ALL SELECT 2 
   UNION ALL SELECT 3  
   UNION ALL SELECT 4 
   UNION ALL SELECT 5 
   UNION ALL SELECT 6) n
  ON LENGTH(REPLACE(`group`, ',' , '')) <= LENGTH(`group`)-n.digit
  Order by ID,`group`) AS T,(SELECT @id:=0) AS R;

<强>输出

id  brand   group
1   adidas      1
2   adidas      2
3   puma        1
4   asianone    1
5   asianone    2
6   asianone    3

<强>演示

  

http://sqlfiddle.com/#!9/be29c2/31

有关说明,请转到此链接并查看我的回答

  

MySql : Convert Column data to row

答案 1 :(得分:0)

select
   brandstable.id,
   brandstable.brand,
   SUBSTRING_INDEX(SUBSTRING_INDEX( brandstable.`groupname`, ',', numbers.n), ',', -1) `groupname`
from
  (select 1 n union all
   select 2 union all select 3 union all
   select 4 union all select 5) numbers INNER JOIN brandstable
  on CHAR_LENGTH(brandstable.groupname)
     -CHAR_LENGTH(REPLACE(brandstable.groupname, ',', ''))>=numbers.n-1
order by
  id, n

replace your tablename with brandstable.

enter image description here

答案 2 :(得分:0)

请使用PHP explode()函数。它可以将字符串分解为数组。

语法: '爆炸(分离器,串,限位);'