Oracle中的正则表达式,仅用于过滤特定字符

时间:2018-08-08 02:38:24

标签: regex oracle oracle10g

我有一个场景

Case 1: "NO 41 ABC STREET"
Case 2: "42 XYZ STREET"

对于我表中的近10万个数据。

我想要一个正则表达式

  • 省略'NO 41'并保留ABC STREET作为情况1的输出,而
  • 在第2种情况下,我希望输出'42 XYZ STREET'。

2 个答案:

答案 0 :(得分:1)

regexp_replace('NO 41 ABC STREET', 'NO [0-9]+ |([0-9]+)', '\1')输出ABC STREETregexp_replace('42 XYZ STREET', 'NO [0-9]+ |([0-9]+)', '\1')输出42 XYZ STREET

答案 1 :(得分:1)

您在表中仅提供了两种数据场景。假设您只想替换以“ NO”开头的列中的字符,后跟数字,然后在其他字符前加空格,则可以使用它。

SQL Fiddle

查询

select s,REGEXP_REPLACE(s,'^NO +\d+ +') as r FROM data

Results

|                S |             R |
|------------------|---------------|
| NO 41 ABC STREET |    ABC STREET |
|    42 XYZ STREET | 42 XYZ STREET |

如果您要过滤的数据比较复杂,请编辑问题并清楚地说明。