繁体   English   中英

Sql Oracle:Regexp_substr

[英]Sql Oracle: Regexp_substr

我的其中一个专栏中有以下表达式: 15-JUL-16,20-JUL-16,20-JUL-16,30-JUL-16

我成功地使用SUBSTR(REGEXP_SUBSTR(base.systemdate, '.+,'), 1, 9) ) 从表达式中获取15-JUL-16 (表达式直到第一个逗号)。

但我不知道如何获得30-JUL-16 (最后一个逗号后的最后一个表达式)。

有什么方法可以使用REGEXP_SUBSTR来获得它吗? 既然我们已经做到了。

有没有一种巧妙的方法可以只使用REGEXP_SUBSTR来获得15-JUL-16而不带逗号? 因为我使用第二个 SUBSTR 来去掉逗号,所以我可以让它与数据格式兼容。

您可以使用非常相似的构造:

SELECT REGEXP_SUBSTR(base.systemdate, '[^,]+$')

Oracle(以及一般的正则表达式)是“贪婪的”。 这意味着它们采用最长的字符串。 如果您知道列表中的项目长度相同,则可以使用:

SELECT SUBSTR( ase.systemdate, -9)

试试这个

    select dates from
    (
        SELECT dates,max(id) over (partition by null) lastrec,min(id) over (partition by null) firstrec,id FROM (
            with mine as(select '15-JUL-16,20-JUL-16,20-JUL-16,30-JUL-16' hello from dual)
               select rownum id,regexp_substr(hello, '[^,]+', 1, level) dates from mine
               connect by regexp_substr(hello, '[^,]+', 1, level) is not null)
     )
     where id=firstrec or id=lastrec

此查询为您提供逗号分隔列表中的第一条和最后一条记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM