2013-06-04 38 views
0

拆分我有A.FIELD其輸出格式如下:使用REGEXP_SUBSTR作爲Oracle

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

我試圖找出一種方式來獲得基於指定的分隔每個單獨的值。 1 :

  1. 所有整數(如:9
  2. 後第一次-或2個空的所有整數,和之前第二:(例如:12)之前
  3. 所有字符第三空間(例如:9:30AM - 12:50PM
  4. 最後一個空間之前和2日至最後一個空格之後的所有字符(例如:AbCdEfGhIj

權現在我能得到以下幾點:

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

是我第二個例子讓9:30AM最好的方法是什麼?它有缺陷嗎?

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

回答

3
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

+0

謝謝你,到最後一行之外的偉大工程。我編輯了我的帖子。 –

+0

@OP - 我已經更新了我的答案。 –