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

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.Returns a value cast to the specified data type if the cast succeeds; otherwise, returns null.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
TRY_CAST ( expression AS data_type [ ( length ) ] )  

ArgumentosArguments

expressionexpression
Valor que se va a convertir.The value to be cast. Cualquier expresión válida.Any valid expression.

data_typedata_type
Tipo de datos al que se va a convertir expression.The data type into which to cast expression.

lengthlength
Número entero opcional que especifica la longitud del tipo de datos de destino.Optional integer that specifies the length of the target data type.

El intervalo de valores aceptables está determinado por el valor de data_type.The range of acceptable values is determined by the value of data_type.

Tipos devueltosReturn Types

Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.Returns a value cast to the specified data type if the cast succeeds; otherwise, returns null.

NotasRemarks

TRY_CAST toma el valor que se le ha pasado e intenta convertirlo al data_type especificado.TRY_CAST takes the value passed to it and tries to convert it to the specified data_type. Si la conversión se realiza correctamente, TRY_CAST devuelve el valor como el data_type especificado; si se produce un error, se devuelve NULL.If the cast succeeds, TRY_CAST returns the value as the specified data_type; if an error occurs, null is returned. Pero si se solicita una conversión que no se permite explícitamente, TRY_CAST generará un error.However if you request a conversion that is explicitly not permitted, then TRY_CAST fails with an error.

TRY_CAST no es una palabra clave reservada y está disponible en todos los niveles de compatibilidad.TRY_CAST is not a new reserved keyword and is available in all compatibility levels. TRY_CAST tiene la misma semántica que TRY_CONVERT al conectarse a los servidores remotos.TRY_CAST has the same semantics as TRY_CONVERT when connecting to remote servers.

EjemplosExamples

A.A. TRY_CAST devuelve NULLTRY_CAST returns null

En el ejemplo siguiente se muestra que TRY_CAST devuelve NULL cuando se produce un error en la conversión.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  

El conjunto de resultados es el siguiente.Here is the result set.

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

En el ejemplo siguiente se demuestra que la expresión debe tener el 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  

El conjunto de resultados es el siguiente.Here is the result set.

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

B.B. TRY_CAST genera un errorTRY_CAST fails with an error

En el ejemplo siguiente, se muestra que TRY_CAST devuelve un error cuando la conversión no está explícitamente permitida.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  

El resultado de esta instrucción es un error, ya que un entero no se puede convertir en un tipo de datos 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 se realiza correctamenteTRY_CAST succeeds

Este ejemplo demuestra que la expresión debe tener el 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  

El conjunto de resultados es el siguiente.Here is the result set.

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

Consulte tambiénSee Also

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