sql >> Databáze >  >> RDS >> Oracle

Oracle:Vyhněte se hodnotě NULL v to_date

Pokud start_date je NULL, není vyvolána žádná výjimka.

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

je dokonale platný SQL příkaz, který vrací NULL.

Chyba, která se vám zobrazuje, silně naznačuje, že alespoň některé řádky v start_date nejsou ve skutečnosti řetězce ve formátu, který očekáváte nebo který mapují na neplatná data (tj. řetězec '13/35/2007'). Můžete napsat funkci, která testuje, zda lze řetězec převést na datum a vrátit převedené datum nebo NULL. To pak můžete použít místo 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;

a poté použijte my_to_date místo to_date . To by mělo odstranit chybu, kterou dostáváte. Pravděpodobně však budete chtít vyčistit data, abyste se zbavili neplatných řetězců.



  1. Jak vytvořit databázový diagram v Accessu

  2. PostgreSQL, počet řádků mezi minimálním a maximálním datem

  3. Vložte obrázek do databáze postgresql

  4. Služba Windows v .net nedokáže rozpoznat název služby tns