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

Try this:

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

(t is your table and p is the column name)

Here is a fiddle

于 2012-07-23T12:15:04.083 回答
0

在 11g 中,您可以使用regexp_substr直接获取模式:

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

在 11g 之前,您可以使用regexp_substr和的组合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 回答