TRY_CAST (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database SíInstancia administrada de Azure SQL síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

TRY_CAST ( expression AS data_type [ ( length ) ] )  

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

expression
Valor que se va a convertir. Cualquier expresión válida.

data_type
Tipo de datos al que se va a convertir expression.

length
Número entero opcional que especifica la longitud del tipo de datos de destino.

El intervalo de valores aceptables está determinado por el valor de data_type.

Tipos de valor devuelto

Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.

Observaciones

TRY_CAST toma el valor que se le ha pasado e intenta convertirlo al data_type especificado. 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. Pero si se solicita una conversión que no se permite explícitamente, TRY_CAST generará un error.

TRY_CAST no es una palabra clave reservada y está disponible en todos los niveles de compatibilidad. TRY_CAST tiene la misma semántica que TRY_CONVERT al conectarse a los servidores remotos.

Ejemplos

A. TRY_CAST devuelve NULL

En el ejemplo siguiente se muestra que TRY_CAST devuelve NULL cuando se produce un error en la conversión.

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:

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

En el ejemplo siguiente se demuestra que la expresión debe tener el formato esperado.

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

El conjunto de resultados es el siguiente:

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

B. TRY_CAST genera un error

En el ejemplo siguiente, se muestra que TRY_CAST devuelve un error cuando la conversión no está explícitamente permitida.

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.

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

C. TRY_CAST se realiza correctamente

Este ejemplo demuestra que la expresión debe tener el formato esperado.

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

El conjunto de resultados es el siguiente:

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

Consulte también

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