【问题标题】:Using REGEXP_SUBSTR as split in Oracle在 Oracle 中使用 REGEXP_SUBSTR 作为拆分
【发布时间】:2013-06-04 16:20:56
【问题描述】:

我有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 的最佳方法吗?有缺陷吗?

我怎样才能最好地利用SUBSTRINSTR和/或REGEXP_SUBSTR

【问题讨论】:

    标签: sql regex oracle plsql substr


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

    【讨论】:

    • 谢谢,除了最后一行外,效果很好。我已经编辑了我的帖子。
    • 我应用第四个:SELECT REGEXP_SUBSTR ('Tag: XXXX (TEM4B19318D) Type: TRIP ONLY Removed from: POINT S_BAY CAPBNK 7F94 SW', '\sCAPBNK\s(\w+)\s' , 1, 1, '', 1) 来自对偶;结果 7F94 就像魅力一样。然而,我不知道它为什么起作用。请有人给我解释一下。
    猜你喜欢
    • 2017-10-08
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2022-11-24
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多