2017-08-12 9 views
0

次のように、文字列 '_ $'をインデックス名とテーブル名に追加しようとしています。 SELECT文で 'regexp_replace'メソッドを使う必要があります。 選択REGEXP_REPLACE(INPUT_STRING ......)Oracleでregex_replaceメソッドを使用して特定の文字列に文字列を追加する方法

入力

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

@所望の出力@

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

あなたはそのための正規表現を構築するために私を助けることができますか?文字列を置換以下で

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

+0

あなたが複数のカラム上の任意のインデックスを持っていますか? –

答えて

1

かなりブルートソリューションは、次のパターンを使用することでしょう

\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; 
+0

申し訳ありません。理解しづらい。 – Sigularity

+0

@Sigularity - 完全なSELECTの例を追加するために私の答えを編集しました。 – rehael

+0

素晴らしいアイデア!それはうまく動作します。どうもありがとうございます。 – Sigularity

関連する問題