Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle:Избягване на NULL стойност в to_date

Ако start_date е NULL, не се хвърля изключение.

select to_date( null, 'mm/dd/yyyy' ) 
  from dual

е напълно валиден SQL израз, който връща NULL.

Грешката, която получавате, категорично предполага, че поне някои от редовете в start_date колона всъщност не са низове във формата, който очаквате, или които съпоставят невалидни дати (т.е. низът „35/13/2007“). Можете да напишете функция, която тества дали даден низ може да бъде преобразуван в дата и да върне или преобразуваната дата, или NULL. След това можете да използвате това вместо to_date .

CREATE OR REPLACE FUNCTION my_to_date( p_str    IN VARCHAR2,
                                       p_format IN VARCHAR2 )
  RETURN DATE
IS
BEGIN
  RETURN to_date( p_str, p_format );
EXCEPTION
  WHEN OTHERS
  THEN
    RETURN NULL;
END;

и след това използвайте my_to_date вместо to_date . Това трябва да елиминира грешката, която получавате. Вероятно обаче ще искате да почистите данните, за да се отървете от невалидните низове.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:таблицата винаги съществува след изтрита таблица

  2. Използване на setDate в PreparedStatement

  3. Как да изберете стойности в колона

  4. Използване на изглед без първичен ключ с Entity

  5. Използване на уеб услуга с PL/SQL:UTL_DBWS или APEX_WEB_SERVICE?