我有一个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
任何人都可以建议我采取正确的方法吗?
等待回复! 谢谢
答案 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之后的内容。