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()
).