Oracle中的正则表达式日期

时间:2016-05-17 14:37:49

标签: oracle

我在Oracle数据库& amp;我需要从论文中提取日期。“备注”列中的数据可以包含带字符或字符和日期的字符串。我只需要将日期填充为空白。

注释
PO发票编号1234
PO发票号34555
addnsd; 2016年1月1日; 2016年1月4日; ssnfdskjnfkjsnfk
andksnd; 2016年1月2日; 2016年2月1日; sdnskjnfk
酒店
装载仪

由于 阿迪提

2 个答案:

答案 0 :(得分:0)

\ d {2} / \ d {2} / \ d {4}这将匹配这些日期格式

答案 1 :(得分:0)

你可以试试这个:

with notes(text) as (
select 'PO Invoice number 1234' from dual union all
select 'PO invoice number 34555' from dual union all
select 'addnsd;01/01/2016;01/04/2016;ssnfdskjnfkjsnfk' from dual union all
select 'andksnd;01/02/2016;02/01/2016;sdnskjnfk' from dual union all
select 'Hotel' from dual union all
select 'Loding' from dual
)
select text, listagg(date_string, ';') within group ( order by date_string)
from (
        select distinct text, regexp_substr(text, '[0-9]{2}/[0-9]{2}/[0-9]{4}', 1, level) as date_string
        from notes
        connect by regexp_instr(text, '[0-9]{2}/[0-9]{2}/[0-9]{4}', 1, level) != 0
     )
group by text  

这使用DISTINCT,因此如果连续多次使用相同的日期,则只会出现1次。