TRY_CAST (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.
Convenciones de sintaxis de Transact-SQL
Sintaxis
TRY_CAST ( expression AS data_type [ ( length ) ] )
Argumentos
expression
Especifica cualquier expresión válida que se va a convertir.
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 valores devueltos
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. Sin embargo, si se solicita una conversión que no se permite explícitamente, se producirá un error en TRY_CAST
.
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
cuando se conecta con servidores remotos.
TRY_CAST
no funciona con varchar(max) si la longitud es superior a 8000.
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
Este es el conjunto de resultados.
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/2022' AS DATETIME2) AS Result;
GO
Este es el conjunto de resultados.
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/2022' AS DATETIME2) AS Result;
GO
Este es el conjunto de resultados.
Result
----------------------------------
2022-12-31 00:00:00.0000000
(1 row(s) affected)