【发布时间】:2016-10-20 17:48:23
【问题描述】:
我有一个包含数组数字的字符串。我想制作恒定长度的字符串。现在我使用两个regexp_replace。首先向字符串添加 10 个数字,然后在剪切字符串的旁边取最后 10 个值:
with s(txt) as ( select '1030123:12031:1341' from dual)
select regexp_replace(
regexp_replace(txt, '(\d+)','0000000000\1')
,'\d+(\d{10})','\1') from s ;
但我喜欢只使用一个正则表达式,比如
regexp_replace(txt, '(\d+)',lpad('\1',10,'0'))
但它不起作用。 lpad 在正则表达式之前执行。你有什么想法吗?
【问题讨论】:
-
组数是否总是相同,即 3?
-
没有。现在它可能是从 1 到 5 的任意组数。但我想为任意组数制定解决方案