gpt4 book ai didi

sql - Regexp_replace 添加额外的字符

转载 作者:行者123 更新时间:2023-12-04 22:10:26 26 4
gpt4 key购买 nike

我在 Oracle 11.2.0.3.0/Toad for Oracle 11.6.1.6 中使用以下查询:

select  regexp_replace('000010PARA197427'
,'([0-9]*)([A-Z]*)([0-9]*)'
,'\3-\2-\1') from dual

197427-PARA-000010 而不是我所期望的。结果是 197427-PARA-000010--

如果我将查询更改为:

select  regexp_replace('000010PARA197427'
,'([0-9]*)([A-Z]*)([0-9]*)'
,'\3-c\2-c\1') from dual

然后我得到 197427-cPARA-c000010-c-c 作为结果。

这就像所有的文字都被附加到结果的末尾。

如有任何帮助,我们将不胜感激。

最佳答案

不确定为什么会发生这种情况,但由于您只有 * 量词并且没有锚定,所以您可能得到一个空匹配(或类似的东西)。

锚定模式 (/^...$/) 似乎有效。对任何量词使用 + 而不是 * 也适用于此示例。

SQL> select regexp_replace('000010PARA197427'
,'([0-9]+)([A-Z]*)([0-9]*)'
,'\3-\2-\1') foo from dual ;

FOO
------------------
197427-PARA-000010

SQL> select regexp_replace('000010PARA197427'
,'^([0-9]*)([A-Z]*)([0-9]*)$'
,'\3-\2-\1') foo from dual ;

FOO
------------------
197427-PARA-000010

关于sql - Regexp_replace 添加额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26848919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com