2

我有A.FIELD它输出以下格式:

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

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

  1. 第一个之前的所有整数:(例如9:)
  2. -第一个或第二个空格之后和第二个空格之前的所有整数:(例如12:)
  3. 第三个空格之前的所有字符(例如9:30AM - 12:50PM:)
  4. 最后一个空格之前和倒数第二个空格之后的所有字符(例如AbCdEfGhIj:)

现在我能够得到以下信息:

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

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

我怎样才能最好地利用SUBSTR,INSTR和/或REGEXP_SUBSTR

4

1 回答 1

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)

小提琴

于 2013-06-04T16:34:36.413 回答