Partilhar via


TRY_CAST (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 de sintaxe Transact-SQL

Sintaxe

TRY_CAST ( expression AS data_type [ ( length ) ] )

Argumentos

  • expression
    O valor a ser convertido. Qualquer expressão válida.
  • data_type
    O tipo de dados no qual converter expression.

  • length
    Inteiro opcional que especifica o comprimento do tipo de dados de destino.

    O intervalo de valores aceitáveis é determinado pelo valor de data_type.

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_CAST obtém o valor transmitido a ele e tenta convertê-lo no data_type especificado. Se a conversão for bem-sucedida, TRY_CAST 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_CAST falhará com um erro.

TRY_CAST não é uma nova palavra-chave reservada e está disponível em todos os níveis de compatibilidade. TRY_CAST tem a mesma semântica que TRY_CONVERT ao se conectar a servidores remotos.

Exemplos

A.TRY_CAST retorna nulo

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

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

Aqui está o conjunto de resultados.

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

(1 row(s) affected)

B.TRY_CAST falha com um erro

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

SELECT TRY_CAST(4 AS xml) 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_CAST tem êxito

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

SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2010' AS datetime2) 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

TRY_CONVERT (Transact-SQL)

CAST e CONVERT (Transact-SQL)