【问题标题】:Oracle Regexp to split string based on first occurrence of delimiterOracle Regexp 根据第一次出现的分隔符拆分字符串
【发布时间】:2019-06-28 10:44:09
【问题描述】:

我有以下数据

1241 - ASGEF - AFZHE
1242 - ASGEF1
1243 - UJHAHAHG - AGHBNG

使用 oracle regexpr 的预期输出

ASGEF - AFZHE
ASGEF1
UJHAHAHG - AGHBNG

【问题讨论】:

    标签: sql regex oracle split


    【解决方案1】:

    SUBSTR + INSTR 可能会运行得更快(即不需要正则表达式)。 result 显示了这一点,而 result_2 显示了一个正则表达式选项。

    SQL> with test (col) as
      2    (select '1241 - ASGEF - AFZHE'     from dual union all
      3     select '1242 - ASGEF1'            from dual union all
      4     select '1243 - UJHAHAHG - AGHBNG' from dual
      5    )
      6  select col,
      7         trim(substr(col, instr(col, '-') + 1)) result,
      8         ltrim(regexp_substr(col, '-.+'), '- ') result_2
      9  from test;
    
    COL                      RESULT                   RESULT_2
    ------------------------ ------------------------ ------------------------
    1241 - ASGEF - AFZHE     ASGEF - AFZHE            ASGEF - AFZHE
    1242 - ASGEF1            ASGEF1                   ASGEF1
    1243 - UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG        UJHAHAHG - AGHBNG
    
    SQL>
    

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 2013-11-15
      • 2014-03-22
      • 1970-01-01
      • 2011-11-13
      • 2017-09-08
      • 2018-09-29
      相关资源
      最近更新 更多