Condividi tramite


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

Icona di collegamento a un argomento 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)

Vedere anche

Riferimento

TRY_CONVERT (Transact-SQL)

CAST e CONVERT (Transact-SQL)