使用oracle extract正则表达式匹配结果中最后出现的年份

时间:2014-10-14 06:37:32

标签: sql regex oracle

我有一些这样的记录:

  

1995,no.4-6; 1996年,no.1,4

     

1977年,第1-2期; 1978年,no.1-3; 1979年,no.1-4

我想在那些记录中提取最后出现的年份。例如。 1996年第一次创纪录,1979年第二次创纪录。我用

  

regexp_substr(记录,' \ d {4}')

但我只在每张唱片中获得第一个出现的年份。我怎么能得到最后一年?

2 个答案:

答案 0 :(得分:0)

[0-9]{4}[^;]*$

你可以试试这个正则表达式。你可以从中提取\d{4}。参见演示。

http://regex101.com/r/yA5iD9/2

答案 1 :(得分:0)

它应该是一个简单的SUBSTRINSTR实现。

SQL> WITH DATA AS
  2    ( SELECT q'[1995,no.4-6;1996,no.1,4]' str FROM dual
  3    UNION ALL
  4    SELECT q'[1977,no.1-2;1978,no.1-3;1979,no.1-4]' FROM dual
  5    )
  6  SELECT SUBSTR(str, instr(str, ';', -1, 1)+1, 4) lst_yr
  7  FROM DATA
  8  /

LST_
----
1996
1979

SQL>