sql >> Database >  >> RDS >> Oracle

Oracle:NULL-waarde vermijden in to_date

Als start_date is NULL, er wordt geen uitzondering gegenereerd.

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

is een perfect geldige SQL-instructie die NULL retourneert.

De fout die u krijgt, houdt sterk in dat ten minste enkele van de rijen in de start_date kolom zijn eigenlijk geen tekenreeksen in het formaat dat u verwacht of die verwijzen naar ongeldige datums (d.w.z. de tekenreeks '13/35/2007'). U kunt een functie schrijven die test of een tekenreeks kan worden geconverteerd naar een datum en de geconverteerde datum of een NULL retourneert. Je kunt dat dan gebruiken in plaats van 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;

en gebruik dan my_to_date in plaats van to_date . Dat zou de fout moeten elimineren die je krijgt. U wilt echter waarschijnlijk de gegevens opschonen om de ongeldige tekenreeksen te verwijderen.



  1. Hoe maak je een Qt mysql-stuurprogramma in Windows?

  2. Tabel- of kolomnaam mag niet beginnen met numeriek?

  3. Datum weergeven uit database PHP

  4. Het SQL Server-transactielogboek, deel 2:logboekarchitectuur