Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come funziona TRY_CAST() in SQL Server

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