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

如何在Oracle中使用regex_replace方法在特定字符串上添加字符串,regex,oracle,regexp-replace,Regex,Oracle,Regexp Replace,我正在尝试向索引名和表名添加字符串“$”,如下所示。我需要在SELECT语句中使用方法“regexp\u replace”。 选择regexp\u replace(输入字符串……) @输入 CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMP_NO") @期望输出 CREATE UNIQUE INDEX "SCOTT"."PK_EMP_$" ON "SCOTT"."EMP_$" ("EMP_NO") 你能帮我建立一个正则表达式

我正在尝试向索引名和表名添加字符串“$”,如下所示。我需要在SELECT语句中使用方法“regexp\u replace”。 选择regexp\u replace(输入字符串……)

@输入

CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMP_NO")
@期望输出

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

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

非常简单的解决方案是使用以下模式:

(.*)(" ON ".*)(" \(.*)
使用以下替换字符串:

\1_$\2_$\3
该模式的工作原理是,在需要插入
\u$
标记的位置拆分输入,然后将其合并,将标记放回拆分输入的位置:

创建唯一索引“SCOTT”。“SCOTT”上的“PK_EMP”
,“EMP
”(“EMP_NO”)

完整选择查询如下所示:

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

在多列上有索引吗?