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 110
compatibilidade .
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