如何在 Oracle 中使用 regex_replace 方法在特定字符串上添加字符串

How to add a string on a specific string by using regex_replace method in Oracle

我正在尝试将字符串“_$”添加到索引名称和 table 名称,如下所示。我需要在 SELECT 语句中使用方法 'regexp_replace'。 selectregexp_replace(input_string......)

@输入

CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMP_NO")

@期望输出

CREATE UNIQUE INDEX "SCOTT"."PK_EMP_$" ON "SCOTT"."EMP_$" ("EMP_NO")

你能帮我建立一个正则表达式吗?

相当粗暴的解决方案将使用以下模式:

(.*)(" ON ".*)(" \(.*)

用以下替换字符串:

_$_$

该模式的工作原理是在您需要插入 _$ 标记的地方拆分输入,然后将其重新加入,将标记放在我们拆分输入的位置:

CREATE UNIQUE INDEX "SCOTT"."PK_EMP|" ON "SCOTT"."EMP|" ("EMP_NO")

完整的 SELECT 查询如下所示:

SELECT REGEXP_REPLACE(
        'CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMP_NO")',
        '(.*)(" ON ".*)(" \(.*)',
        '_$_$'
       ) RX
  FROM dual;