【问题标题】: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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2020-04-14
    相关资源
    最近更新 更多