在Oracle中使用REGEXP_SUBSTR作为拆分

时间:2013-06-04 16:20:57

标签: sql regex oracle plsql substr

A.FIELD输出以下格式:

9:30AM - 12:50PM AbCdEfGhIj XY-000

我试图找出一种方法来根据指定的分隔符获取每个单独的值。

  1. :之前的所有整数(例如:9
  2. 第一个-或第二个空格之后,第二个:之前的所有整数(例如:12
  3. 第3个空格之前的所有字符(例如:9:30AM - 12:50PM
  4. 最后一个空格之前和第二个空格之后的所有字符(例如:AbCdEfGhIj
  5. 现在我能够得到以下内容:

    REGEXP_SUBSTR(A.FIELD, '\S*$')                        -- XY-000
    REGEXP_SUBSTR(A.UP_CLASS_MEETINGS, '[^ ]+', 1)        -- 9:30AM
    

    我的第二个例子是9:30AM最好的方法吗?它有缺陷吗?

    如何最好地利用SUBSTRINSTR和/或REGEXP_SUBSTR

1 个答案:

答案 0 :(得分:5)

regexp_substr(a.field, '(\d+):', 1, 1, '', 1),
regexp_substr(a.field, '(\d+):', 1, 2, '', 1),
regexp_substr(a.field, '\S+(\s|-)+\S+'),
regexp_substr(a.field, '\S+(\s|-)+\S+\s+(.*)\s+\S+$', 1, 1, '', 2)

fiddle