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()
).