TRY_CAST (Transact-SQL)
Restituisce un cast del valore nel tipo di dati specificato se il cast ha esito positivo. In caso contrario, restituisce Null.
Si applica a: SQL Server (da SQL Server 2012 alla versione corrente), Database SQL di Windows Azure (dalla versione iniziale alla versione corrente). |
Convenzioni della sintassi Transact-SQL
Sintassi
TRY_CAST ( expression AS data_type [ ( length ) ] )
Argomenti
- expression
Valore di cui eseguire il cast. Qualsiasi espressione valida.
data_type
Tipo di dati in cui eseguire il cast del parametro expression.length
Numero intero facoltativo con cui si specifica la lunghezza del tipo di dati di destinazione.L'intervallo di valori accettabili è determinato dal valore del parametro data_type.
Tipi restituiti
Restituisce un cast del valore nel tipo di dati specificato se il cast ha esito positivo. In caso contrario, restituisce Null.
Osservazioni
TRY_CAST accetta il valore passato e tenta di convertirlo nel tipo di dati data_type specificato. Se il cast ha esito positivo, TRY_CAST restituisce il valore come l'elemento data_type specificato. Se si verifica un errore, viene restituito Null. Se, tuttavia, si richiede una conversione non consentita in modo esplicito, TRY_CAST ha esito negativo e viene restituito un errore.
TRY_CAST non è una nuova parola chiave riservata ed è disponibile in tutti i livelli di compatibilità. La semantica di TRY_CAST è uguale a quella di TRY_CONVERT quando si esegue la connessione a server remoti.
Esempi
A.Restituzione del valore Null da parte di TRY_CAST
Nell'esempio seguente viene dimostrato che se il cast ha esito negativo viene restituito il valore Null da parte di TRY_CAST.
SELECT
CASE WHEN TRY_CAST('test' AS float) IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
Set di risultati:
Result
------------
Cast failed
(1 row(s) affected)
Nell'esempio seguente viene dimostrato che l'espressione deve essere nel formato previsto.
SET DATEFORMAT dmy;
SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;
GO
Set di risultati:
Result
----------------------
NULL
(1 row(s) affected)
B.Esito negativo di TRY_CAST con visualizzazione di un errore
Nell'esempio seguente viene dimostrato che se il cast non è consentito in modo esplicito viene restituito un errore da parte di TRY_CAST.
SELECT TRY_CAST(4 AS xml) AS Result;
GO
Il risultato di questa istruzione è un errore perché il cast di un tipo di dati Integer non può essere eseguito nel tipo di dati xml.
Explicit conversion from data type int to xml is not allowed.
C.Esito positivo di TRY_CAST
In questo esempio viene dimostrato che l'espressione deve essere nel formato previsto.
SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;
GO
Set di risultati:
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)