字符串中的数字规则替换有关问题
字符串中的数字规则替换问题
若要求对字符串‘某小区11栋2单元1101号’中的所有数字按照规则,即number+1,进行修改,结果是‘某小区12栋3单元1102号’。(1)能否用regexp_replace一次完成?
(2)regexp_replace中的找到的匹配字符串可否以某种方式引用然后编程?
请以此为例讲解,谢谢!
------解决思路----------------------
若要求对字符串‘某小区11栋2单元1101号’中的所有数字按照规则,即number+1,进行修改,结果是‘某小区12栋3单元1102号’。(1)能否用regexp_replace一次完成?
(2)regexp_replace中的找到的匹配字符串可否以某种方式引用然后编程?
请以此为例讲解,谢谢!
------解决思路----------------------
SQL> with T AS (SELECT '某小区11栋2单元1101号' STR FROM DUAL)
2 SELECT LISTAGG(STR,'')WITHIN GROUP(ORDER BY N)
3 FROM(
4 SELECT 'Y' AS FLAG,
5 REGEXP_INSTR(STR,'[0-9]+',1,ROWNUM) N,
6 TO_CHAR(TO_NUMBER(REGEXP_SUBSTR(STR,'[0-9]+',1,ROWNUM))+1) STR
7 FROM T CONNECT BY ROWNUM<=REGEXP_COUNT(STR,'[0-9]+')
8 UNION ALL
9 SELECT 'N' AS FLAG,
10 REGEXP_INSTR(STR,'[^0-9]+',1,ROWNUM) N,
11 REGEXP_SUBSTR(STR,'[^0-9]+',1,ROWNUM) STR
12 FROM T CONNECT BY ROWNUM<=REGEXP_COUNT(STR,'[^0-9]+'));
LISTAGG(STR,'')WITHINGROUP(ORDERBYN)
--------------------------------------------------------------------------------
某小区12栋3单元1102号
SQL>