0

ここでは、データベース列から部分文字列をコピーして、列の最後に追加します。

例えば

列のデータは次のようになります。

 string data -id pattern -xyz test some data 

これは、このように交換する必要があります

 string data -id pattern -xyz test some data -c test.pattern.pl

-id前後に文字列をコピー-xyzし、最後に test と pl の間に追加したいことがわかります

ある列が

string data -id john -xyz test some data

次に、置き換えられた値は

string data -id john -xyz test some data -c test.john.pl

REGEXP_REPLACE/を使用してみREGEXP_SUBSTRましたが、解決できませんでした。

4

2 に答える 2

0

これを試して:

select p,
       p || regexp_replace(p, '(.*-id )(.*)( -xyz.*)', ' -c test.\2.pl') np
  from t

(tはテーブルで、pは列名です)

ここにフィドルがあります

于 2012-07-23T12:15:04.083 に答える
0

regexp_substr11g では、パターンを直接取得するために使用できます。

select txt, regexp_substr(txt, '-id ([^ ]*)', 1, 1, '', '1')
  from (select 'string data -id john -xyz test some data' txt from dual)

TXT                                        REG
string data -id john -xyz test some data   john

regexp_substr11g より前は、との組み合わせを使用できましたsubstr

select txt, 
       substr(regexp_substr(txt, '-id [^ ]*'), 4) sub
  from (select 'string data -id john -xyz test some data' txt from dual)
于 2012-07-23T12:12:54.897 に答える