Partilhar via


TRY_CONVERT (Transact-SQL)

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 vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

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

Argumentos

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

  • expression
    O valor a ser convertido.

  • style
    Expressão de inteiro opcional que especifica como a função TRY_CONVERT deve ser convertida em expression.

    style aceita os mesmos valores do parâmetro style da função CONVERT. Para obter mais informações, consulte 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 obtém o valor transmitido 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_typeespecificado; se um erro ocorrer, nulo será retornado. Porém, se você solicitar uma conversão que não é permitida explicitamente, TRY_CONVERT falhará com um erro.

TRY_CONVERT é uma nova palavra-chave no nível de compatibilidade 110.

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

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

Aqui está 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

Aqui está 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

Aqui está o conjunto de resultados.

Result
----------------------------------
2010-12-31 00:00:00.0000000

(1 row(s) affected)

Consulte também

Referência

CAST e CONVERT (Transact-SQL)