Condividi tramite


TRY_CONVERT (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Restituisce un cast di valori al tipo di dati specificato se il cast ha esito positivo; in caso contrario, restituisce NULL.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

TRY_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Argomenti

data_type

Tipo di dati in cui eseguire il cast di expression.

length

Intero facoltativo che specifica la lunghezza del tipo di dati di destinazione per i tipi di dati che consentono una lunghezza specificata dall'utente. Il valore massimo per la lunghezza è 8.000 byte.

expression

Valore di cui eseguire il cast.

style

Espressione integer facoltativa che specifica la modalità di conversione dell'espressione da parte della TRY_CONVERT funzione.

style accetta gli stessi valori del parametro di stile della CONVERT funzione. Per altre informazioni, vedere CAST e CONVERT.

Il valore di data_type determina l'intervallo di valori accettabili. Se style è NULL, TRY_CONVERT restituisce NULL.

Tipi restituiti

Restituisce un cast di valori al tipo di dati specificato se il cast ha esito positivo; in caso contrario, restituisce NULL.

Osservazioni:

TRY_CONVERTaccetta il valore passato e tenta di convertirlo nel data_type specificato. Se il cast ha esito positivo, TRY_CONVERT restituisce il valore come data_type specificato; se si verifica un errore, NULL viene restituito . Tuttavia, se si richiede una conversione non consentita in modo esplicito, si TRY_CONVERT verifica un errore.

TRY_CONVERT è una parola chiave riservata, a partire dal livello 110di compatibilità .

Questa funzione è in grado di essere remota ai server con SQL Server 2012 (11.x) e versioni successive. Non è remoto ai server con una versione precedente a SQL Server 2012 (11.x).

Esempi

R. TRY_CONVERT restituisce NULL

Nell'esempio seguente viene illustrato che TRY_CONVERT restituisce NULL quando il cast ha esito negativo.

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

Il set di risultati è il seguente.

Result  
------------  
Cast failed

Nell'esempio seguente viene dimostrato che l'espressione deve essere nel formato previsto.

SET DATEFORMAT dmy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

Il set di risultati è il seguente.

Result  
----------------------  
NULL

B. TRY_CONVERT restituisce un errore

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

SELECT TRY_CONVERT(XML, 4) 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. TRY_CONVERT ha esito positivo

In questo esempio viene dimostrato che l'espressione deve essere nel formato previsto.

SET DATEFORMAT mdy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

Il set di risultati è il seguente.

Result
----------------------------------
2022-12-31 00:00:00.0000000