Compartilhar via


TRY_CONVERT (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 um valor convertido 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 ] )

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

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 para comprimento é 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 retornará NULL.

Tipos de retorno

Retorna um valor convertido 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 como a data_type especificada e, se ocorrer um erro, NULL será retornada. 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 110de compatibilidade .

Essa função pode ser remota para servidores que tenham o 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

Este é 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

Este é 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

Este é o conjunto de resultados.

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