使用分隔符长度3'|||'

时间:2016-04-12 06:21:25

标签: sql regex plsql

我有一个PLSQL代码从30行的表中获取数据,其中10列的长度为3的分隔符,我需要根据这10列中的字段数将1行转换为多行。

所以我将所有数据加载到1个临时表中,在临时表上我调用了一个游标,它将拆分数据并在主表中插入多行。

在游标内部我使用regexp_substr来分割我使用的值和正则表达式是[^\\|]+{3},我在拆分后没有得到实际值。

用于测试用例的示例数据是

100|||200||300|||400||||0

分裂后我应该得到如下的值

100, 200||300 , 400 , |0

但我得到的是

100 , 200, 300 ,400, 0 

任何人都可以建议我采取正确的方法吗?

等待回复! 谢谢

2 个答案:

答案 0 :(得分:2)

试试这个。希望它有所帮助。

SELECT REPLACE('100|||200||300|||400||||0','|||',',') OUTPUT FROM DUAL;

----------------------------OUTPUT---------------------------------------------

OUTPUT

100,200||300,400,|0
-----------------------------------------------------------------------------

答案 1 :(得分:1)

正则表达式(\|*\d.*?)\|{3}|(\|*\d$)捕获here之后的内容。