Come utilizzare la funzione TRY_CAST in SQL Server

Il TRY_CAST viene utilizzata la funzione in SQL Server per trasmettere il valore dal tipo di dati esistente a un tipo di dati di destinazione specificato. Ciò si verifica solo se l'operazione ha esito positivo. Restituisce NULL se la conversione fallisce. TRY_CAST è una versione estesa della funzione CAST. Questo tutorial spiega come usare TRY_CAST in SQL Server.

TRY_CAST considera il valore passato e il tipo di dati esistente e tenta di convertirlo in un tipo di dati di destinazione specificato. Se l'operazione di conversione è consentita, restituisce il valore nel tipo di dati di destinazione specificato. Se l'operazione non riesce a convertire il valore, restituisce NULL come output.

TRY_CAST è stato incluso per la prima volta con l'edizione di Microsoft SQL Server 2012.

Sintassi per TRY_CAST

TRY_CAST (espressione come target_data_type [lunghezza]) 

Espressione: Valore da trasmettere a un tipo di dati di destinazione
Tipo di dati target: Il tipo di dati in cui deve essere eseguito il cast del valore
Lunghezza: Parametro facoltativo, per specificare la lunghezza del tipo di dati

Limitazioni dell'utilizzo di CAST in SQL Server

Quando si usa CAST, si otterrà un errore se la conversione fallisce dal tipo di dati di origine a quello di destinazione. Se non è permesso, questo può infrangere il codice. Pertanto, si consiglia di utilizzare TRY_CAST anziché CAST.

Nell'esempio seguente, sto provando a eseguire il cast di un valore stringa su un numero intero, che è una conversione errata. CAST non riesce a completare questa conversione e restituisce un errore. Tuttavia, TRY_CAST restituisce NULL quando la conversione non riesce a completarsi.

SELEZIONA CAST ('Tech-Recipes' come INT) come CastExample; 

Messaggio 245, livello 16, stato 1, riga 1
Conversione non riuscita durante la conversione del valore varchar 'Tech-Recipes' nel tipo di dati int.



Utilizzare TRY_CAST per evitare che SQL Server generi un errore se la conversione del tipo di dati non riesce.

SELEZIONARE TRY_CAST ('Tech-Recipes' come INT) come TryCastExample; 
TryCastExample -------------- NULL 

Esempi Utilizzo di TRY_CAST

1. Errore nell'utilizzo di TRY_CAST (restituisce NULL)

L'esempio seguente mostra che, quando fallisce, TRY_CAST restituisce NULL invece di generare un errore come fa CAST.

SELEZIONA CASO QUANDO TRY_CAST ('Tech-Recipes.com' AS INT) È NULL THEN 'Conversion failed' ELSE 'Conversion Successful' END; 

2. Conversione riuscita utilizzando TRY_CAST

L'esempio seguente dimostra che TRY_CAST completa una conversione corretta se è consentito convertire in un tipo di dati mirati.

SELEZIONA CASO QUANDO TRY_CAST (1234 COME DECIMAL (18,2)) È NULL THEN "Conversion failed" ELSE "Conversion Successful" END; 

3. Conversione esplicita con TRY_CAST (non consentito)

L'esempio seguente dimostra che TRY_CAST non è autorizzato a eseguire una conversione esplicita. TRY_CAST genera un errore.

Messaggio 529, livello 16, stato 2, riga 1
La conversione esplicita dal tipo di dati int a xml non è consentita.

Sommario

TRY_CAST può essere utilizzato al posto della funzione CAST per evitare di trasmettere un errore senza utilizzare il blocco TRY-CATCH. Gli esempi utilizzati in questo tutorial mostrano come utilizzare la funzione TRY_CAST in SQL Server.