22nd Jan 2025 Lectura de 7 minutos Función SQL CAST(): Visión General Jill Thornhill análisis de datos Índice Sintaxis de la función SQL CAST() CAST() Ejemplos de funciones 1. Uso de números como cadenas 2. Unir tablas en columnas con diferentes tipos de datos 3. Cambio de tipos de campo en una operación ETL Cuándo utilizar CAST() Tipos de datos soportados por los dialectos SQL más populares 1. Servidor SQL 2. MySQL 3. Oracle 4. PostgreSQL ¿Qué sigue con la función SQL CAST()? La funciónSQL CAST() convierte un tipo de datos en otro. En este artículo se explica para qué sirve esta función y cuándo y cómo utilizarla. En las bases de datos relacionales, cada columna tiene un tipo de datos definido que controla qué tipo de datos se almacenan en la columna y cómo se pueden utilizar esos datos. Por ejemplo, es probable que la descripción de un producto se almacene como una cadena de texto, y no podría utilizarla para realizar operaciones aritméticas (por ejemplo, calcular totales). En cambio, el saldo deudor de un cliente se almacenaría como dato numérico y podría utilizarse en cálculos. SQL dispone de conjuntos de funciones independientes para las operaciones numéricas y para la manipulación de cadenas. Ocasionalmente, puede que desee anular estas reglas y tratar una columna de forma diferente a las operaciones habituales de su tipo de datos. Aquí es donde resulta útil la función SQL CAST(). Convierte un dato en otro tipo de datos dentro de la consulta. Más adelante veremos algunos ejemplos de cuándo puede ser necesario hacer esto. Si quieres profundizar en tus conocimientos de SQL, consulta nuestro curso SQL de la A a la Z. Este conjunto de 7 cursos te lleva desde principiantes hasta temas avanzados de SQL. Adquirirá experiencia práctica trabajando en más de 700 ejercicios guiados; por el camino, se familiarizará con los conceptos de las bases de datos relacionales. Todo lo que necesita es un navegador y una conexión a Internet, y dispondrá de ayuda en cada paso. Sintaxis de la función SQL CAST() La función CAST() tiene la misma sintaxis sencilla en todos los dialectos de SQL: CAST(value AS type) value puede ser cualquier valor SQL válido. Puede ser el nombre de una columna, el resultado de un cálculo, el resultado de una función o un valor literal. type es el tipo de datos deseado, es decir, en qué quiere convertir el valor. Por ejemplo, supongamos que la columna date_hired de la tabla employee se ha definido como un tipo de datos DATE. Desea rellenarla con la fecha de hoy utilizando la función GETDATE(), que devuelve un valor del tipo DATETIME. Puede convertir el valor DATETIME en un valor DATE utilizando esta sintaxis: INSERT INTO employee (date_hired) VALUES (CAST(GETDATE() AS DATE)); CAST() Ejemplos de funciones Veamos algunos ejemplos de cómo puede utilizarse CAST() en su trabajo diario. 1. Uso de números como cadenas Una tabla denominada employee tiene el campo departamento, que está definido como el tipo de datos INT (entero). Los tres primeros dígitos de este código indican la sección de la organización. La dirección quiere saber cuántas personas trabajan en cada sección. Para ello, necesitamos extraer los tres primeros dígitos del departamento. Tenemos que convertir este valor INT en un valor VARCHAR y, a continuación, utilizar la función de cadena LEFT() para recuperar los tres primeros caracteres. La consulta tiene el siguiente aspecto: SELECT LEFT(CAST (department AS VARCHAR(15)), 3) AS section, COUNT(*) AS employee_count FROM employee GROUP BY LEFT(CAST (department AS VARCHAR(15)), 3) ORDER BY LEFT(CAST (department AS VARCHAR(15)), 3); Observe que CAST() está incrustada dentro de la función LEFT() y que las funciones deben repetirse en las cláusulas GROUP BY y ORDER BY. 2. Unir tablas en columnas con diferentes tipos de datos La tabla employee del ejemplo anterior debe unirse a otra tabla department_details, cuyo campo code está definido como VARCHAR. Normalmente, la unión de la columna departamento en employee a la columna code en department_details daría lugar a un error, ya que los campos tienen tipos de datos diferentes. Sabemos que el código de departamento siempre será numérico, por lo que podemos evitar el problema convirtiendo el código en un entero. La consulta quedaría así: SELECT department_name, name, date_hired FROM employee JOIN department_details ON department = CAST(code AS int); 3. Cambio de tipos de campo en una operación ETL Un proceso de fabricación tiene sensores en varios puntos que generan un estado de alarma cada vez que se encuentra una condición inusual. Estas alarmas se cargan automáticamente en una tabla denominada alarms. Un proceso diario copia las filas de alarms en una tabla del almacén denominada alarm_historyque puede utilizarse para el análisis. La tabla alarms tabla se borra. La tabla alarms tiene el siguiente aspecto: clock_time varchar(20), sensor_no int, status_code char(2) La tabla alarm_history es similar, pero la hora del reloj debe almacenarse como DATETIME, ya que los gestores necesitarán extraerla y analizarla por un intervalo de fechas. Se define así: clock_time datetime, sensor_no int, status_code char(2) La consulta que copia los datos a alarm_history necesita convertir el VARCHAR clock_time a un tipo de datos DATETIME. Su aspecto es el siguiente INSERT INTO alarm_history SELECT CAST(clock_time AS DATETIME), sensor_no, status_code FROM alarms; Cuándo utilizar CAST() Veamos algunos escenarios en los que la función SQL CAST() puede ser útil. Operaciones ETL (Extraer, Transformar, Cargar): ETL toma datos de una o más fuentes y los transforma en la forma necesaria para un uso diferente. Por ejemplo, puede tomar datos almacenados en un sistema utilizado para las operaciones cotidianas de una empresa y cargarlos en un almacén de datos adecuado para el análisis de marketing. Los tipos de datos del almacén de datos pueden ser diferentes de los del sistema original, por lo que CAST() es importante en este caso. Utilización de funciones pertenecientes a un tipo de datos diferente Puede haber ocasiones en las que desee utilizar funciones de cadena en datos numéricos, por ejemplo, para dar formato a los datos de un informe. Del mismo modo, puedes querer utilizar funciones numéricas y agregados en datos de cadena (siempre que sepas que la columna contiene números). Unir tablas en columnas con distintos tipos de datos: Esto no suele ocurrir si la base de datos ha sido bien diseñada, pero en la práctica puede ocurrir. Trabajar con fechas almacenadas como cadenas. A veces, los diseñadores de bases de datos almacenan las fechas como cadenas de texto; estas fechas no pueden utilizarse para funciones y cálculos de fechas. Puede evitarlo utilizando CAST(). Uso de SQL dinámico: Si está escribiendo programas o procedimientos almacenados, puede que necesite incorporar datos a una cadena para construir una consulta dinámica. Si su consulta devuelve un error debido a un tipo de datos no coincidente, la función CAST() es probablemente la solución a su problema. Tipos de datos soportados por los dialectos SQL más populares 1. Servidor SQL SQL Server permite utilizar cualquiera de sus tipos de datos válidos como parámetro de tipo en la función CAST(). Algunas conversiones no están permitidas cuando los tipos de datos no son compatibles. Puede comprobar qué conversiones están permitidas en la documentación de T-SQL. Para una cobertura completa de la función CAST() en SQL Server, consulte la documentación de Microsoft sobre las funciones CAST() y CONVERT(). 2. MySQL MySQL no es estándar en el sentido de que no utiliza el tipo de datos para el parámetro type. En su lugar, tiene un conjunto fijo de valores permitidos: BINARY CHAR (Nota: Este tipo se utiliza para cualquier tipo de valor de cadena, por ejemplo VARCHAR o TEXT. El motor de la base de datos decidirá el tipo de datos producido en función de la longitud del texto). DATE DATETIME DECIMAL DOUBLE FLOAT JSON NCHAR REAL SIGNED SPACIAL_TYPE UNSIGNED YEAR Puede encontrar más información sobre CAST() en el manual de referencia de MYSQL. 3. Oracle Oracle utiliza el tipo de datos para el parámetro type. La documentación tiene una tabla de tipos de datos que son válidos para la conversión. 4. PostgreSQL PostgreSQL utiliza el tipo de datos para el parámetro type. La documentación de PostgreSQL no indica explícitamente qué conversiones están permitidas, pero las conversiones estándar entre cadenas, números y fechas están bien. PostgreSQL le permite crear sus propias reglas de casting para conversiones no estándar usando la función CREATE_CAST. ¿Qué sigue con la función SQL CAST()? Hemos tenido una introducción completa a la función SQL CAST() y como usarla. Si buscas un programa de estudio completo que cubra no sólo los aspectos básicos, sino también temas avanzados -incluido CAST() -, quiero recomendarte una vez más nuestro curso SQL de la A a la Z. Está repleto de consejos útiles, ejercicios prácticos y opiniones de expertos. Buena suerte y feliz aprendizaje. Tags: análisis de datos