oracle篩選不能進行字符串轉日期to_date()的數據


在oracle中,有時候需要對時間格式的字符串進行排序

比如說有個字段是TEST_TIME是varchar類型的,但是需要通過它對數據進行排序,就需要對字段進行to_date轉換。但有時候數據中會出現臟數據(不能轉換為date的數據)。導致報錯。報錯如下顯示:

 

 因此需要把臟數據給排除掉或者找出來刪除掉。

因此需要寫一個function把不能轉換位日期的字符串找出來。思路就是把字符串轉換為日期,如果成功就返回'Y',如果報錯,就返回'N'

function如下顯示:

CREATE OR REPLACE FUNCTION F_IS_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 F_IS_DATE;

然后這樣就可以寫出一個篩選不能轉換為日期的字符串了。

sql如下:

select * from SFC_DATAGROUP_DJ where f_is_date(TEST_TIME)='N'

就能找出不能轉換為日期的字符串了

 

 

同理:字符串轉小數,字符串轉整數等等都可以用相似的方式篩選出不符合要求的數據。

參考:https://zhidao.baidu.com/question/691902130567092484.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM