我正在尝试将逗号分隔的(,)值从字符串拆分为多列
样本数据:
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
答案 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;