sql >> Databasteknik >  >> RDS >> Oracle

Oracle:Undviker NULL-värde i to_date

Om start_date är NULL, inget undantag görs.

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

är en perfekt giltig SQL-sats som returnerar NULL.

Felet du får antyder starkt att åtminstone några av raderna i start_date kolumnen är faktiskt inte strängar i det format du förväntar dig eller som mappar till ogiltiga datum (d.v.s. strängen '13/35/2007'). Du kan skriva en funktion som testar för att se om en sträng kan konverteras till ett datum och returnera antingen det konverterade datumet eller en NULL. Du kan sedan använda det istället för 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;

och använd sedan my_to_date istället för to_date . Det borde eliminera felet du får. Du kommer förmodligen att vilja rensa upp data, men för att bli av med de ogiltiga strängarna.



  1. Hur man ändrar färg och teckensnitt i SQL Server Management Studio (SSMS) - SQL Server / TSQL självstudie del 12

  2. mysql tinyint(1) vs tinyint(2) vs tinyint(3) vs tinyint(4)

  3. Ansluta till mysql 5.0-databas med rent vbscript?

  4. Genom att kombinera JSON_SEARCH och JSON_EXTRACT får jag:Ogiltigt JSON-sökvägsuttryck.