【问题标题】:Regular expression in Oracle to Filter particular charecters onlyOracle中的正则表达式仅过滤特定字符
【发布时间】:2019-01-15 04:45:50
【问题描述】:

我有一个场景

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

我的表中有近 100 000 个数据。

我想要一个正则表达式

  • 省略 'NO 41' 并将ABC STREET 作为案例 1 的输出,而
  • 在案例 2 中,我想要 '42 XYZ STREET' 作为输出。

【问题讨论】:

  • 请检查我的回答,如果它对您有帮助,请接受它或为给定的解决方案提供相关反馈(cmets)。请阅读:stackoverflow.com/help/someone-answers 以了解为什么它很重要。

标签: regex oracle oracle10g


【解决方案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

【讨论】:

    【解决方案2】:

    您只提供了表格中数据的 2 个场景。假设您只想替换以“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 |
    

    如果您有更复杂的数据需要过滤,请编辑您的问题并清楚描述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多