设置:
CREATE TABLE TABLE_NAME (KEY, VALUE) AS
SELECT '00', 'val1||||val5' FROM DUAL UNION ALL
SELECT '01', 'val2|val2|val3|' FROM DUAL UNION ALL
SELECT '02', 'val1|val2||val4' FROM DUAL;
查询1:
SELECT Key,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 1, NULL, 1) AS val1,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 2, NULL, 1) AS val2,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 3, NULL, 1) AS val3,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 4, NULL, 1) AS val4,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 5, NULL, 1) AS val5
FROM table_name
个
结果:
KEY VAL1 VAL2 VAL3 VAL4 VAL5
--- --------------- --------------- --------------- --------------- ---------------
00 val1 val5
01 val2 val2 val3
02 val1 val2 val4
来源
2015-12-15 16:42:42
MT0
什么是你想要的输出?一行五列?在0行和5行之间有两列?还有别的吗?我不确定你在尝试什么,可能是'regexp_substr'和什么“失败”。 –
我需要将分隔符上的值列拆分为5列。 '根据标准,'dual'选择regexp_substr('val1 | val2 ||| val5','[^ |] +',1,3)将产生'val5',因为它是第三个值。我的目标是将这些数据转移到一个有目的的表格中。 –
如果你将它编辑到你的问题中(这是你正在使用的代码和你想要输入数据的输出),这将会很有帮助。 –