REGEXP_SUBSTR,Oracle SQL

时间:2018-01-17 15:37:22

标签: sql oracle

我正在尝试使用oracle中的REGEXP_SUBSTR函数来读取字符长度略有不同的字段值,以提取字符串中的第一个日期。

以下是从日期中提取日期所需的值的示例:

  

1)季节性开始日期从01/02/18更改。

     

2)季节性开始日期从01/05/17更改为01/15/18。

     

3)季节性开始日期更改为01/03/2018。

从这些例子中我需要提取以下值:

  

1)01/02/18

     

2)01/05/18

     

3)01/03/2018

我已经对REGEXP_SUBSTR做了一些研究,但我对如何处理这三个不同的值感到难过。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用:

  • (0?[1-9]|[12]\d|3[01])匹配1到31之间的天数,
  • (0?[1-9]|1[012])匹配1到12之间的数月和
  • \d{2}\d{2}?以匹配2位数或4位数年份。

您可以这样使用:

SELECT TO_DATE(
         REGEXP_SUBSTR(
           your_input,
           '(0?[1-9]|[12]\d|3[01])/(0?[1-9]|1[012])/\d{2}\d{2}?'
         ),
         'DD/MM/YY'
       ) As first_date
FROM   your_table;