En SQL Server, una función de uso frecuente es CAST() , que convierte una expresión de un tipo de datos a otro. Pero si el lanzamiento no tiene éxito, devuelve un error.
Introduzca TRY_CAST() .
El TRY_CAST() La función no devuelve un error si la conversión falla. En su lugar, devuelve NULL .
Sin embargo, hay algunas ocasiones en las que devolverá un error.
Sintaxis
La sintaxis es así:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Donde expression es la expresión a convertir, data_type es el nuevo tipo de datos y length es una longitud opcional para el nuevo tipo de datos.
Ejemplo 1:el lanzamiento tiene éxito
Aquí hay un ejemplo de conversión de una cadena como decimal :
SELECT TRY_CAST('007' AS DECIMAL(5,2)); Resultado:
7.00
En este caso, el elenco tuvo éxito.
Ejemplo 2:la conversión falla y devuelve NULL
Aquí hay un ejemplo de la falla del lanzamiento y NULL siendo devuelto:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2)); Resultado:
NULL
La transmisión falló, por lo que NULL fue devuelto.
A modo de comparación, esto es lo que sucede cuando usamos CAST() en lugar de TRY_CAST() :
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2)); Resultado:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Ejemplo 3:la transmisión falla y devuelve un error
Hay algunas ocasiones en las que TRY_CAST() devolverá un error.
Si explícitamente no se permite una conversión, devuelve un error:
SELECT TRY_CAST(10 AS xml); Resultado:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Más información
Vea cómo CAST() Funciona en SQL Server para obtener más ejemplos de conversión y CAST() contra TRY_CAST() en SQL Server para una comparación entre CAST() y TRY_CAST() .
Consulte la documentación de Microsoft para CAST() y CONVERT() para obtener información más detallada (la mayor parte también se aplica a TRY_CAST() ).