2015-05-17 34 views
2

后加空格,我试图让一个空间分成每4个数字/数字(不是字符)。这就是我想出:每4号/位的Oracle 11g

newStudentNumber := regexp_replace(newStudentNumber, '[[:digit:]](....)', '\1 '); 
    dbms_output.put_line(newStudentNumber); 

结果:

NL 2345 7894 TUE 

我真正想要的:

NL 1234 5678 944 TUE 

我的代码替换数在与空格键每4个地方,而不是增加一个像上面想要的结果一样的空间。

任何人都可以解释这一点吗?

在此先感谢

+0

是什么原始输入? –

+0

你对原始输入有什么意思?想要的最终结果或我的整个代码的输入? –

+0

有点看到一个人在你身边。 regexp_replce =替换。但是如何增加空间呢? –

回答

2

您可以使用以下正则表达式..

([[:digit:]]{4}) 

并与你现在正在做什么替代.. \1(space)

为什么你不工作?

您的正则表达式匹配一个数字并捕获下4个字符(不仅是数字)。所以..当你做一个替换..匹配但没有捕获的数字也被替换..而不是因为它无法插入。

输入= NL 12345678944 TUE和正则表达式说明= [[:digit:]](....)

NL 12345678944 TUE (it will match digit "1" and captures "2345") 

DEMO

+0

当我想你的解决方案,我得到这个: NL 944 TUE 的价值newStudentNumber = NL 12345678944 TUE,我想改变这种状况,以NL 1234 5678 944 TUE –

+0

你检查的演示?您使用了'newStudentNumber:= REGEXP_REPLACE(newStudentNumber, '([[:位:]] {4})', '\ 1');'? –

+0

我检出了演示。我真的不明白,但谢谢你提供这个演示。我也想感谢你的解决方案。有用。非常感谢,我标记你的awnser是正确的。欢呼声 –