如何处理OracleSQL中的无效日期
有一列显示交易的一些报表
例如:'date-05-03-2020-Tran-100002345-W.44321-CR-9999eu843'
我只从声明中取出日期。在某些情况下,存在一个无效的日期,如日期,05- 032 -2020(以月,而不是两个数三个数)
因此,当我执行查询时出现错误,因为我使用 TO_DATE 函数将 varchar 从上一个语句中提取后转换为日期
所以我需要的是一个像 excel 表中的 IfError 但在 oracle SQL 中的函数
例如:如果 DATE_x 无效,则将其替换为 DATE_x2
with x as(
select TO_DATE('01/20/2021','DD-MM-YYYY') DATE_x,
TO_DATE('01/02/2021','DD-MM-YYYY') DATE_x2
from dual
)
select
DATE_x2
from x;
请指教
回答
default... on conversion error to_date 中有一个参数:https ://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/TO_DATE.html#GUID-D226FA7C-F7AD-41A0-BB1D-BD8EF9440118
所以你可以写TO_DATE('01/20/2021' default '01-01-2020' on conversion error, 'DD-MM-YYYY')或TO_DATE('01/20/2021' default null on conversion error ,'DD-MM-YYYY')。
还有validate_conversion功能:https : //docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/VALIDATE_CONVERSION.html#GUID-DC485EEB-CB6D-42EF-97AA-4487884CB2CD