TRY_CAST (Transact-SQL)TRY_CAST (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Retorna uma conversão de valor ao tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.Returns a value cast to the specified data type if the cast succeeds; otherwise, returns null.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

  
TRY_CAST ( expression AS data_type [ ( length ) ] )  

ArgumentosArguments

expressãoexpression
O valor a ser convertido.The value to be cast. Qualquer expressão válida.Any valid expression.

data_typedata_type
O tipo de dados no qual converter expression.The data type into which to cast expression.

lengthlength
Inteiro opcional que especifica o comprimento do tipo de dados de destino.Optional integer that specifies the length of the target data type.

O intervalo de valores aceitáveis é determinado pelo valor de data_type.The range of acceptable values is determined by the value of data_type.

Tipos de retornoReturn Types

Retorna uma conversão de valor ao tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.Returns a value cast to the specified data type if the cast succeeds; otherwise, returns null.

RemarksRemarks

TRY_CAST usa o valor passado para ele e tenta convertê-lo no data_type especificado.TRY_CAST takes the value passed to it and tries to convert it to the specified data_type. Se a conversão for bem-sucedida, TRY_CAST retornará o valor como o data_type especificado; se um erro ocorrer, será retornado um valor nulo.If the cast succeeds, TRY_CAST returns the value as the specified data_type; if an error occurs, null is returned. Porém, se você solicitar uma conversão que não é permitida explicitamente, TRY_CAST falhará com um erro.However if you request a conversion that is explicitly not permitted, then TRY_CAST fails with an error.

TRY_CAST não é uma nova palavra-chave reservada e está disponível em todos os níveis de compatibilidade.TRY_CAST is not a new reserved keyword and is available in all compatibility levels. TRY_CAST tem a mesma semântica de TRY_CONVERT ao se conectar a servidores remotos.TRY_CAST has the same semantics as TRY_CONVERT when connecting to remote servers.

ExemplosExamples

A.A. TRY_CAST retorna nuloTRY_CAST returns null

O exemplo a seguir demonstra que TRY_CAST retorna nulo quando a conversão falha.The following example demonstrates that TRY_CAST returns null when the cast fails.

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.Here is the result set.

Result  
------------  
Cast failed  
  
(1 row(s) affected)  

O exemplo a seguir demonstra que a expressão deve estar no formato esperado.The following example demonstrates that the expression must be in the expected format.

SET DATEFORMAT dmy;  
SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;  
GO  

Aqui está o conjunto de resultados.Here is the result set.

Result  
----------------------  
NULL  
  
(1 row(s) affected)  

B.B. TRY_CAST falha com um erroTRY_CAST fails with an error

O exemplo a seguir demonstra que TRY_CAST retorna um erro quando a conversão não é permitida explicitamente.The following example demonstrates that TRY_CAST returns an error when the cast is explicitly not permitted.

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.The result of this statement is an error, because an integer cannot be cast into an xml data type.

Explicit conversion from data type int to xml is not allowed.  

C.C. TRY_CAST tem êxitoTRY_CAST succeeds

Este exemplo demonstra que a expressão deve estar no formato esperado.This example demonstrates that the expression must be in the expected format.

SET DATEFORMAT mdy;  
SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;  
GO  

Aqui está o conjunto de resultados.Here is the result set.

Result  
----------------------------------  
2010-12-31 00:00:00.0000000  
  
(1 row(s) affected)  

Consulte TambémSee Also

TRY_CONVERT (Transact-SQL) TRY_CONVERT (Transact-SQL)
CAST e CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)