sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona TRY_CAST() en SQL Server

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