我正在尝试使用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做了一些研究,但我对如何处理这三个不同的值感到难过。
非常感谢任何帮助。
答案 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;