TRY_CONVERT (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure SimInstância Gerenciada do Azure SQL simAzure Synapse Analytics simParallel Data Warehouse

Retorna uma conversão de valor ao tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.

Ícone de link do tópico Convenções da sintaxe Transact-SQL

Sintaxe

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

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

data_type [ ( length ) ]
O tipo de dados no qual converter expression.

expressão
O valor a ser convertido.

style
Expressão de inteiro opcional que especifica como a função TRY_CONVERT deve converter expression.

style aceita os mesmos valores do parâmetro style da função CONVERT. Para obter mais informações, veja CAST e CONVERT (Transact-SQL).

O intervalo de valores aceitáveis é determinado pelo valor de data_type. Se style for nulo, TRY_CONVERT retornará nulo.

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_CONVERT usa o valor passado a ele e tenta convertê-lo no data_type especificado. Se a conversão for bem-sucedida, TRY_CONVERT 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_CONVERT falhará com um erro.

TRY_CONVERT é uma palavra-chave reservada no nível de compatibilidade 110 e superior.

Essa função é capaz de ser remota para servidores da versão SQL Server 2012 (11.x) e posterior. Ela não será remota para servidores que têm uma versão anterior ao SQL Server 2012 (11.x).

Exemplos

a. TRY_CONVERT retorna nulo

O exemplo a seguir demonstra que TRY_CONVERT retorna nulo quando a conversão falha.

SELECT   
    CASE WHEN TRY_CONVERT(float, 'test') 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_CONVERT(datetime2, '12/31/2010') AS Result;  
GO  

Este é o conjunto de resultados.

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

B. TRY_CONVERT falha com um erro

O exemplo a seguir demonstra que TRY_CONVERT retorna um erro quando a conversão não é permitida explicitamente.

SELECT TRY_CONVERT(xml, 4) 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_CONVERT bem-sucedido

Este exemplo demonstra que a expressão deve estar no formato esperado.

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

Este é o conjunto de resultados.

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

Consulte Também

CAST e CONVERT (Transact-SQL)