在oracle中,有时候需要对时间格式的字符串进行排序,由于字符串时间不规范性,出现脏数据(不能转换为date的数据)导致报错,报错如下显示:
因此需要把脏数据给排除掉或者找出来删除掉。
因此需要写一个function把不能转换位日期的字符串找出来。思路就是把字符串转换为日期,如果成功就返回’Y’,如果报错,就返回’N’;函数具体如下:
CREATE OR REPLACE FUNCTION ERROR_DATE (I_DATE VARCHAR2) RETURN VARCHAR2
IS
V_DATE DATE;
BEGIN
V_DATE := to_date(I_DATE,'yyyy-mm-dd hh24:mi:ss');
RETURN 'Y';
EXCEPTION
WHEN OTHERS THEN
RETURN 'N';
END ERROR_DATE ;
不能转换成日期的数据可以根据一下sql查看:
select t."/BIC/G0HTJSSJ" from "/BIC/AZCSYHT1300"t where ERROR_DATE("/BIC/G0HTJSSJ")='N'