在MySQL中分割逗号分隔的值

时间:2018-07-17 12:50:34

标签: mysql string substring

我正在尝试将逗号分隔的(,)值从字符串拆分为多列

样本数据:

     COL1                 COL2            COL3
000002,000003,000042   09,31,51      007,004,007

预期输出:

Pno       Cno  Sno
000002    09   007
000003    31   004
000042    51   007

我尝试了以下查询:

SELECT   SUBSTRING_INDEX(COL1, ',', 1) Pno
                 ,SUBSTRING_INDEX(COL2, ',', 1) Cno
                 ,SUBSTRING_INDEX(COL3, ',', 1) Sno
            FROM MyTargetTable

结果:

Pno        Cno  Sno
000002     09   007

我可能在每列中获得3行以上,我想知道是否有任何方法可以在不指定子字符串位置的情况下实现这一点。

可能的输入数据也可能是这样

     COL1                        COL2             COL3
000002,000003,000042,,000002   09,31,51,,32      007,004,007,,012

1 个答案:

答案 0 :(得分:1)

这是一个主意。假设您有一个整数(ints)表,其值(i)0-9 ...

SELECT DISTINCT
       SUBSTRING_INDEX(SUBSTRING_INDEX(col1,',',i+1),',',-1)x
     , SUBSTRING_INDEX(SUBSTRING_INDEX(col2,',',i+1),',',-1)y
     , SUBSTRING_INDEX(SUBSTRING_INDEX(col3,',',i+1),',',-1)z
  FROM my_table
     , ints
 ORDER 
    BY i;