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)

Confira também