Partilhar via


TRY_CONVERT (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 para o tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna NULL.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

data_type

O tipo de dados no qual converter expression.

length

Um inteiro opcional que especifica o tamanho do tipo de dados de destino, para tipos de dados que permitem um comprimento especificado do usuário. O valor máximo de comprimento é de 8.000 bytes.

expressão

O valor a ser lançado.

style

Expressão inteira opcional que especifica como a TRY_CONVERT função deve traduzir a expressão.

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

O valor de data_type determina o intervalo de valores aceitáveis. Se o estilo for NULL, então TRY_CONVERT retorna NULL.

Tipos de retorno

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

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 conforme o data_type especificado; se ocorrer um erro, NULL será retornado. 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, começando com o nível de 110compatibilidade .

Essa função pode ser remota para servidores que têm SQL Server 2012 (11.x) e versões posteriores. Ele não é remoto para servidores que têm uma versão anterior ao SQL Server 2012 (11.x).

Exemplos

a. TRY_CONVERT retorna NULL

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

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

Veja a seguir o conjunto de resultados.

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

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

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

Veja a seguir o conjunto de resultados.

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

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/2022') AS Result;
GO

Veja a seguir o conjunto de resultados.

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