【问题标题】:How to add a string on a specific string by using regex_replace method in Oracle如何在 Oracle 中使用 regex_replace 方法在特定字符串上添加字符串
【发布时间】:2018-01-20 21:16:28
【问题描述】:
我正在尝试将字符串“_$”添加到索引名称和表名称中,如下所示。我需要在 SELECT 语句中使用方法“regexp_replace”。
选择 regexp_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")
你能帮我建立一个正则表达式吗?
【问题讨论】:
标签:
regex
oracle
regexp-replace
【解决方案1】:
相当粗暴的解决方案将使用以下模式:
(.*)(" ON ".*)(" \(.*)
使用以下替换字符串:
\1_$\2_$\3
该模式的工作原理是将输入拆分到您需要插入 _$ 令牌的位置,然后将其重新连接起来,将令牌放置在我们拆分输入的位置:
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 ".*)(" \(.*)',
'\1_$\2_$\3'
) RX
FROM dual;