Prashanth Jayaram

Descripción general de la función SQL CAST y SQL CONVERT

December 6, 2019 by

Este artículo es un esfuerzo para discutir y analizar las funciones de conversión de SQL y convertir SQL como parte de un seguimiento y actualización de los artículos anteriores, en el que hemos discutido varias sugerencias de SQL, como SQL fecha, SQL Coalesce, Unión SQL, SQL Join, SQL igual, Cadena SQL etc.

En algunas ocasiones necesitamos convertir datos entre los diferentes tipos de datos disponibles en SQL. Además de trabajar con datos, hay algunas funciones integradas que se pueden usar para convertir los datos. Así que echemos un vistazo más de cerca a las funciones de conversión SQL SQL CAST y SQL CONVERT.

Introducción

Para realizar operaciones o comparaciones o transformación entre los datos en una base de datos SQL Server, y los tipos de datos SQL ya que esos valores deben coincidir. Cuando los tipos de datos SQL son diferentes, pasarán por un proceso llamado conversión de tipos. La conversión de tipos de datos SQL, en este proceso, puede ser implícita o explícita.

Las funciones de conversión de tipos de datos comúnmente se usan especialmente para cumplir con los estándares de datos de los objetos específicos o sistemas de destino. Por ello estamos en el mundo tratando con una variedad de datos heterogéneos.

Nota: A walk-through of high-level concepts of data management is discussed in this article En este artículo, se analizan los conceptos de alto nivel de gestión de datos en las funciones de cadena SQL para Munging de datos (Wrangling)

A veces, los tipos de datos de los datos requeridos deben convertirse a otros tipos de datos para cálculos o transformación o procesos o para cumplir con los formatos de datos de destino. Por ejemplo, cuando multiplicamos datos de sistema decimal con un número entero, los datos experimentan una transformación interna y convierten implícitamente un número entero a tipo de datos en sistema decimal y lo que da lugar a tener el resultado en formato de datos decimales.

Conversión implícita y explícita de SQL

Cuando tratamos con dos valores que son de la misma naturaleza, pero diferentes tipos de datos, detrás de bastidores, el motor de la base de datos convierte los valores de tipo de datos más bajos en tipos de datos más altos antes de que pueda continuar con el cálculo. Este tipo se conoce como conversión implícita. Por otro lado, tenemos conversiones explícitas donde se puede llamar a una función SQL CAST o SQL CONVERT para cambiar el tipo de datos. Consecuentemente usted puede consultar la descripción general del formato de fecha SQL; Función DateDiff SQL, función DateAdd SQL y másartículos para ejemplos.

Sintaxis:

exp
Define el argumento de expresión válido

datatype
Esto proporciona los detalles del tipo de datos de destino

len
Esto especifica la longitud del tipo de datos de destino. Este es un parámetro opcional por defecto, el valor de longitud se establece en 30

style
Es un valor entero utilizado con la función CONVERT SQL para traducir la expresión al resultado deseado

Tabla de conversión de datos de conversión y conversión de SQL

El siguiente cuadro de conversión es una hoja de referencia rápida para la conversión del tipo de datos.

SQL Convert and SQL Cast data conversion chart
Referencia: https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

Ejemplo 1: conversión implícita de SQL con números

En el siguiente ejemplo, se agregan dos números aleatorios 5 y 212345 y se muestran los resultados.

Implicit conversion results with numbers

Vemos que los dos valores son de diferentes tipos de datos, el motor de la base de datos convirtió implícitamente el valor int en un bigint antes de hacer la adición. Y luego podría procesar la operación de adición a medida que se convierten en el mismo tipo de datos.

Ejemplo 2: conversión implícita de SQL con caracteres

En el siguiente ejemplo, nosotros agregaremos dos tipos de datos de caracteres. Nosotros crearemos variables @ con un tipo de datos de caracteres y asignemos un valor ‘5’ y @b con un valor ‘2’.

En la salida, primero, obtenemos los valores de las variables ‘a’ y ‘b’, segundo el resultado del cálculo en el que son colocados ambos valores juntos. Con los valores de los caracteres en su lugar, el motor de la base de datos decidió implícitamente concatenar ambos valores y mostrar 52 como la salida del cálculo.

Implicit conversion results with characters

Ejemplo 3: Cómo realizar una conversión explícita usando SQL Cast

En el siguiente ejemplo, veremos cómo forzar la conversión de un tipo de datos a otro. Tomemos el ejemplo anterior y convierta los valores de entrada a tipo numérico y luego agreguemos esos valores.

La función SQL CAST toma los dos argumentos. Primero, los datos que queremos procesar, en este caso, los datos son ‘5’ y ‘2’ y son del campo char, y luego cómo desea procesarlos o cómo queremos CAST (emitirlos). En este caso, desea CAST (emitirlos) como un campo de números enteros.

En la salida, usted observa que los valores de los caracteres de entrada se convierten y también se agregan esos valores y el resultado es de tipo entero.

Explicit conversion results using SQL Cast

Ejemplo 4: Manejo avanzado de errores usando TRY_CAST

En el siguiente ejemplo, analizaremos los valores de los tipos de datos mediante la función de conversión de SQL y la función try_cast de SQL.

En el siguiente SQL, el valor de cadena ‘123’ se convierte a BIGINT. Se lo pudo convertir debido a la naturaleza de los datos. Echemos un vistazo al segundo ejemplo, el valor de cadena ‘xyz’ se usa en la expresión para la función de conversión SQL. Cuando usted está haciendo esto, verá un error que indica “Error al convertir el tipo de datos varchar a bigint”. Cuando realiza el análisis de datos con varias fuentes de datos, generalmente obtenemos ese tipo de valores en los datos de origen. Entonces, para manejar este tipo de escenarios, puede usar la función SQL try_cast. En la tercera línea de SQL, pasamos la cadena como un valor de entrada, posteriormente si después de la ejecución, no hemos recibido un error, pero hemos terminado obteniendo un valor NULL como salida. El valor NULL puede simplificarse posteriormente utilizando la función SQL ISNULL o la función de fusión SQL.

Nota: Puede consultar el artículo Uso de la función de fusión de SQL en SQL Server para obtener más información.

Error handling results from using Try Cast

Ejemplo 5: código de estilo explicado en funciones CONVERT

El siguiente ejemplo convierte el campo hiredate a diferentes estilos disponibles de la función de conversión SQL. La función de conversión SQL primero comienza con un tipo de datos y una coma, y luego es seguida con una expresión. Con fechas, también tenemos otro argumento que podemos suministrar, que se llama código de estilo SQL. Puede obtener una lista de estos en el artículo CAST y CONVERT (Transact-SQL) documentación técnica.

Sigamos adelante ejecutando el SQL mencionado anteriormente. Ahora podemos ver que se muestran diferentes resultados utilizando parámetros de estilo dentro de la función de conversión de SQL. Usted Puede ver que el campo de fecha de alquiler se convierte el campo de fecha en diferentes estilos.

Results from using the SQL convert function

Ejemplo 6: Las diferencias y similitudes entre CAST y CONVERT

En el siguiente ejemplo, puede ver que el uso de CAST y CONVERT en el siguiente T-SQL para comparar los tiempos de ejecución.

Ejecutemos el siguiente T-SQL para usar la función SQL CAST

Differences and similarities between SQL CONVERT and CAST

Ahora, ejecute el mismo T-SQL con la función CONVERTIR SQL en su lugar.

Consejos rápidos:

  • CAST es puramente un estándar ANSI-SQL. Pero, CONVERT es función específica de SQL Server del mismo modo que tenemos en to_char o to_date en Oracle
  • CAST está predominantemente disponible en todos los productos de bases de datos debido a su portabilidad y facilidad de uso
  • No habrá una diferencia importante en términos de ejecución de consultas entre las funciones SQL Cast y SQL Convert. Como usted Puede ver existe una ligera diferencia en los tiempos de ejecución, esto se debe a la conversión interna de SQL CAST y a su función nativa de CONVERTIR SQL, pero la función CONVERTIR viene con una opción “Código de estilo” para derivar varias combinaciones de fecha y hora, decimales y valores monetarios. En cualquier caso, la función CONVERT de SQL se ejecuta ligeramente mejor que la función CAST de SQL

Ejemplo 7: Código de estilo en el cálculo usando CONVERT

En este ejemplo, usted enumerará el campo de y nivel de la tabla “HumanResources.EmployeeHistory” de la base de datos Adventureworks2016. La segunda columna en el SQL se usa la función CONVERTIR SQL con el tipo de datos char (10) y los datos de la tasa de expresión lo multiplican por 1000.

En el primer ejemplo de SQL, el código de estilo no se usa, pero para el segundo y tercer ejemplo de SQL, el código de estilo se establece en 1.

En el producto de salida, podemos ver que la consulta con el código de estilo 1 devuelve una salida de texto con una coma como separador en la posición de miles. La consulta con el código de estilo 0 da como resultado la salida de texto sin separador de coma.

Style code in the calculation using SQL CONVERT

Resumen o Recapitulación

Hasta ahora, nosotros hemos hablado sobre las funciones de conversión de SQL, try_cast de SQL y conversión de SQL y de cómo puede convertir entre cadenas, números enteros y los valores de fecha y hora. También analizamos la función CONVERT de SQL con el código de estilo. Revisamos algunos ejemplos de las funciones de conversión SQL implícitas y explícitas. Y entendimos la diferencia entre las funciones SQL CAST y SQL CONVERT. También verá que se usa una expresión condicional con SQL ISNULL junto con SQL try_cast, y nuevamente, si yo lo hubiera hecho sin usar la parte de prueba de eso, ello habría fallado en lugar de retornar un valor. Así es como puede se puede emitir valores, lo que sigue un estándar, con este nivel adicional, y también cometer errores con mucha más gracia.

Eso es todo por ahora… Espero que hayas disfrutado leyendo este artículo. Siéntete libre de comentar abajo.

Prashanth Jayaram
168 Views