Cómo usar la función TRY_CAST en SQL Server

los TRY_CAST Se utiliza la función en SQL Server para convertir el valor de su tipo de datos existente a un tipo de datos de destino especificado. Esto ocurre solo si la operación es exitosa. Devuelve NULL si la conversión falla. TRY_CAST es una versión extendida de la función CAST. Este tutorial explica cómo usar TRY_CAST en SQL Server.

TRY_CAST considera el valor pasado y su tipo de datos existente e intenta convertirlo en un tipo de datos de destino específico. Si la operación de conversión está permitida, devuelve el valor en el tipo de datos de destino especificado. Si la operación no puede convertir el valor, devuelve NULL como una salida.

TRY_CAST se incluyó por primera vez con la edición de Microsoft SQL Server 2012.

Sintaxis para TRY_CAST

TRY_CAST (Expresión como target_data_type [longitud]) 

Expresión: Valor que se va a convertir a un tipo de datos de destino
Tipo de datos de destino: El tipo de datos en el que el valor debe ser convertido
Longitud: Parámetro opcional, para especificar la longitud del tipo de datos

Limitaciones del uso de CAST en SQL Server

Al usar CAST, obtendremos un error si la conversión falla desde el origen al tipo de datos de destino. Si no está permitido, esto puede romper el código. Por lo tanto, se recomienda utilizar TRY_CAST en lugar de CAST.

En el siguiente ejemplo, estoy tratando de CAST un valor de cadena a un entero, que es una conversión incorrecta. CAST no puede completar esta conversión y devuelve un error. Sin embargo, TRY_CAST devuelve NULL cuando la conversión no se completa.

SELECT CAST ('Recetas de tecnología' como INT) como CastExample; 

Msg 245, nivel 16, estado 1, línea 1
La conversión falló al convertir el valor de varchar 'Recetas de tecnología' al tipo de datos int.



Use TRY_CAST para evitar que SQL Server genere un error si falla la conversión del tipo de datos.

SELECCIONA TRY_CAST ('Recetas Tech' como INT) como TryCastExample; 
TryCastExample -------------- NULL 

Ejemplos de uso de TRY_CAST

1. Fallo al usar TRY_CAST (devuelve NULL)

El siguiente ejemplo muestra que, cuando falla, TRY_CAST devuelve NULL en lugar de generar un error como CAST.

SELECCIONE EL CASO CUANDO TRY_CAST ('Tech-Recipes.com' COMO INT) ES NULLO LUEGO 'Falló la conversión' ELSE 'La conversión fue exitosa' END; 

2. Conversión exitosa utilizando TRY_CAST

El siguiente ejemplo muestra que TRY_CAST completa una conversión exitosa si se le permite convertir a un tipo de datos objetivo.

SELECCIONE EL CASO CUANDO TRY_CAST (1234 COMO DECIMAL (18,2)) ES NULLO ENTONCES 'Falló la conversión' ELSE 'La conversión fue exitosa' FINAL; 

3. Conversión explícita usando TRY_CAST (no permitido)

El siguiente ejemplo demuestra que TRY_CAST no tiene permitido realizar una conversión explícita. TRY_CAST lanza un error.

Msg 529, Nivel 16, Estado 2, Línea 1
La conversión explícita del tipo de datos int a xml no está permitida.

Resumen

Se puede usar TRY_CAST en lugar de la función CAST para evitar emitir un error sin usar el bloque TRY-CATCH. Los ejemplos utilizados en este tutorial muestran cómo usar la función TRY_CAST en SQL Server.