RegExp_Replace在Oracle中的某个单词列表之后重置所有内容

时间:2013-03-19 16:40:33

标签: sql database oracle plsql

我在列中有200个单词的列表。 我想替换那些词之后的任何内容。

Eg: E Graham St       DDS  ==> E Graham St
    Trent Ave      4DF ===> Trent Ave

单词的例子是AVE,ST .... 我正在考虑将该字符串传递给函数,并且函数内部将使用regexp替换。

1 个答案:

答案 0 :(得分:4)

你可以使用类似的东西:

SQL> select regexp_replace(str, '^((.*? ave[ \.])|(.*? st[ \.])|(.*? rd[ \.])|(.*? close[ \.])).*$', '\1', 1, 1, 'i')
  2   from (select 'E Graham St       DDS' str from dual
  3         union all select 'Trent Ave      4DF' from dual
  4         union all select 'Foo bar Rd. asd' from dual
  5         union all select 'E Graham St St DDS' from dual);

REGEXP_REPLACE(STR,'^((.*?AVE[\.])|(.*?ST[\.])|(.*?RD[\.])|(.*?CLOSE[\.])).*$','
--------------------------------------------------------------------------------
E Graham St
Trent Ave
Foo bar Rd.
E Graham St