In SQL Server, una funzione usata spesso è CAST() , che converte un'espressione di un tipo di dati in un altro. Ma se il cast non riesce, restituisce un errore.
Inserisci TRY_CAST() .
Il TRY_CAST() la funzione non restituisce un errore se il cast non riesce. Invece, restituisce NULL .
Tuttavia, in alcune occasioni viene restituito un errore.
Sintassi
La sintassi è questa:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Dove expression è l'espressione da convertire, data_type è il nuovo tipo di dati e length è una lunghezza opzionale per il nuovo tipo di dati.
Esempio 1:successo nel lancio
Ecco un esempio di cast di una stringa come decimal :
SELECT TRY_CAST('007' AS DECIMAL(5,2)); Risultato:
7.00
In questo caso, il cast è riuscito.
Esempio 2 – Il cast non riesce e restituisce NULL
Ecco un esempio di cast non riuscito e NULL in fase di restituzione:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2)); Risultato:
NULL
Il cast non è riuscito, quindi NULL è stato restituito.
A titolo di confronto, ecco cosa succede quando utilizziamo CAST() invece di TRY_CAST() :
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2)); Risultato:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Esempio 3 – La trasmissione non riesce e restituisce un errore
Ci sono alcune occasioni in cui TRY_CAST() restituirà un errore.
Se un cast non è esplicitamente consentito, restituisce un errore:
SELECT TRY_CAST(10 AS xml); Risultato:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Maggiori informazioni
Guarda come CAST() Funziona in SQL Server per ulteriori esempi di conversione e CAST() rispetto a TRY_CAST() in SQL Server per un confronto tra CAST() e TRY_CAST() .
Consulta la documentazione Microsoft per CAST() e CONVERT() per informazioni più dettagliate (la maggior parte si applica anche a TRY_CAST() ).