TRY_CAST (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric
Retorna uma conversão de valor ao tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.
Convenções de sintaxe de Transact-SQL
Sintaxe
TRY_CAST ( expression AS data_type [ ( length ) ] )
Argumentos
expressão
Especifica qualquer expressão válida a ser convertida.
data_type
O tipo de dados no qual converter expression.
length
Inteiro opcional que especifica o comprimento do tipo de dados de destino.
O intervalo de valores aceitáveis é determinado pelo valor de data_type.
Tipos de retorno
Retorna uma conversão de valor ao tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.
Comentários
TRY_CAST
usa o valor passado a ele e tenta convertê-lo no data_type especificado. Se a conversão for bem-sucedida, TRY_CAST
retornará o valor como o data_type especificado; se ocorrer um erro, será retornado nulo. Porém, se você solicitar uma conversão que não é permitida explicitamente, TRY_CAST
falhará com um erro.
TRY_CAST
não é uma nova palavra-chave reservada e está disponível em todos os níveis de compatibilidade. TRY_CAST
tem a mesma semântica que TRY_CONVERT
ao se conectar a servidores remotos.
TRY_CAST
não funcionará para varchar(max) se o comprimento for superior a 8000.
Exemplos
a. TRY_CAST retorna nulo
O exemplo a seguir demonstra que TRY_CAST
retorna nulo quando a conversão falha.
SELECT
CASE WHEN TRY_CAST('test' AS FLOAT) IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
Veja a seguir o conjunto de resultados.
Result
------------
Cast failed
(1 row(s) affected)
O exemplo a seguir demonstra que a expressão deve estar no formato esperado.
SET DATEFORMAT dmy;
SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO
Veja a seguir o conjunto de resultados.
Result
----------------------
NULL
(1 row(s) affected)
B. TRY_CAST falha com um erro
O exemplo a seguir demonstra que TRY_CAST
retorna um erro quando a conversão não é permitida explicitamente.
SELECT TRY_CAST(4 AS XML) AS Result;
GO
O resultado dessa instrução é um erro, porque um inteiro não pode ser convertido em um tipo de dados xml.
Explicit conversion from data type int to xml is not allowed.
C. TRY_CAST tem êxito
Este exemplo demonstra que a expressão deve estar no formato esperado.
SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO
Veja a seguir o conjunto de resultados.
Result
----------------------------------
2022-12-31 00:00:00.0000000
(1 row(s) affected)