TRY_CAST (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse 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 ) ] )  

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

expressão
O valor a ser convertido. Qualquer expressão válida.

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 para 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 um erro ocorrer, será retornado um valor 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 de TRY_CONVERT ao se conectar a servidores remotos.

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  

Este é 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/2010' AS datetime2) AS Result;  
GO  

Este é 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/2010' AS datetime2) AS Result;  
GO  

Este é o conjunto de resultados.

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

Consulte Também

TRY_CONVERT (Transact-SQL)
CAST e CONVERT (Transact-SQL)