Share via


TRY_CAST (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)SQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric

Restituisce un cast del valore nel tipo di dati specificato se il cast ha esito positivo. In caso contrario, restituisce Null.

Convenzioni di sintassi Transact-SQL

Sintassi

TRY_CAST ( expression AS data_type [ ( length ) ] )

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

expression

Specifica qualsiasi espressione valida di cui eseguire il cast.

data_type

Tipo di dati in cui eseguire il cast di 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 di 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_CASTaccetta il valore passato e tenta di convertirlo nel data_type specificato. Se il cast ha esito positivo, TRY_CAST restituisce il valore come data_type specificato. Se si verifica un errore, viene restituito null. Tuttavia, se si richiede una conversione non consentita in modo esplicito, si TRY_CAST verifica un errore.

TRY_CAST non è una nuova parola chiave riservata ed è disponibile in tutti i livelli di compatibilità. TRY_CAST ha la stessa semantica di TRY_CONVERT quando ci si connette ai server remoti.

TRY_CAST non funziona per varchar(max) se la lunghezza è superiore a 8000.

Esempi

R. Restituzione del valore Null da parte di TRY_CAST

Nell'esempio seguente viene illustrato che TRY_CAST restituisce Null quando il cast ha esito negativo.

SELECT
CASE WHEN TRY_CAST('test' AS FLOAT) IS NULL
     THEN 'Cast failed'
     ELSE 'Cast succeeded'
END AS Result;
GO

Questo è il 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/2022' AS DATETIME2) AS Result;
GO

Questo è il set di risultati.

Result
----------------------
NULL
  
(1 row(s) affected)

B. Esito negativo di TRY_CAST con visualizzazione di un errore

Nell'esempio seguente viene illustrato che TRY_CAST restituisce un errore quando il cast non è consentito in modo esplicito.

SELECT TRY_CAST(4 AS XML) AS Result;
GO

Il risultato di questa istruzione è un errore, perché non è possibile eseguire il cast di un numero intero in un 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/2022' AS DATETIME2) AS Result;
GO

Questo è il set di risultati.

Result
----------------------------------
2022-12-31 00:00:00.0000000
  
(1 row(s) affected)

Vedi anche