La función CAST en PostgreSQL es una herramienta clave para convertir un tipo de dato en otro dentro de tus consultas. Esto resulta especialmente útil en escenarios donde necesitas realizar operaciones entre valores que inicialmente no son compatibles. Por ejemplo, si tienes un número almacenado como texto, puedes usar CAST para convertirlo a un formato numérico y así realizar cálculos o comparaciones sin problemas.
Otro caso común ocurre con fechas. Imagina que una tabla almacena una fecha como texto y necesitas relacionarla con otra tabla donde las fechas están almacenadas en el tipo de dato DATE
. En estos casos, CAST facilita la conversión entre formatos para que puedas realizar las operaciones o uniones necesarias sin errores.
Como parte de las herramientas de manipulación de datos en PostgreSQL, esta función es imprescindible para garantizar que los datos se utilicen de forma eficiente y precisa en cálculos, comparaciones y transformaciones.
En este artículo, primero te mostraré la sintaxis básica de CAST, y luego veremos ejemplos prácticos para que entiendas cómo aplicarla en diversos escenarios.
Para más información, puedes consultar la documentación oficial de la función CAST en PostgreSQL.
Sintaxis
La sintaxis para utilizar la función CAST en PostgreSQL es la siguiente:
SELECT CAST ( VALOR AS TIPO )
En el segundo caso, escribimos directamente el valor seguido de :: y el tipo a convertir:
SELECT VALOR::TIPO
Recuerda que el valor a convertir puede ser el nombre de un campo específico dentro de una tabla. PostgreSQL te ofrece dos formas de realizar la conversión: utilizando la función CAST o el operador de tipo ::
. Aquí tienes un ejemplo práctico:
SELECT CAST(campo1 AS TIPO) AS conversion_cast, campo1::TIPO AS conversion_operador
FROM tabla1;
Ejemplos
Convertir número a texto
En el siguiente ejemplo convertimos un número en un texto:
SELECT CAST( 1986 AS TEXT ), 1986::TEXT;
Convertir texto a número
En el siguiente ejemplo convertimos un texto en un número:
SELECT CAST( '1986' AS INTEGER ) "Método 1", '1986'::INTEGER "Método 2";
Convertir texto a número decimal
En el siguiente ejemplo convertimos un texto en un número decimal:
SELECT CAST ('35.2' AS DOUBLE PRECISION) "Método 1", '35.2'::DOUBLE PRECISION "Método 2";
Convertir texto a moneda
En el siguiente ejemplo convertimos un texto en una moneda:
SELECT CAST( '1986' AS MONEY ) "Método 1", '1986'::MONEY "Método 2";
Convertir texto a intervalo
En el siguiente ejemplo convertimos un texto en un intervalo:
SELECT CAST( '35 year 3 months 4 days' AS INTERVAL ) "Método 1", '35 year 3 months 4 days'::INTERVAL "Método 2";
Convertir texto a fecha
En el siguiente ejemplo convertimos un texto en una fecha:
SELECT CAST( 'September 26, 1986' AS DATE ) "Método 1.1", CAST( '26/09/1986' AS DATE ) "Método 1.2", CAST( '26-09-1986' AS DATE ) "Método 1.3", 'September 26, 1986'::DATE "Método 2";
Convertir texto a fecha y hora
En el siguiente ejemplo convertimos un texto en una fecha con hora:
SELECT CAST ('1986-09-26 15:10:20' AS TIMESTAMP) "Método 1", '1986-09-26 15:10:20'::TIMESTAMP "Método 2";
Convertir texto a booleano
En el siguiente ejemplo convertimos un texto en un booleano:
SELECT CAST ('true' AS BOOLEAN) "Método 1.1", CAST ('t' AS BOOLEAN) "Método 1.2", 'false'::BOOLEAN "Método 2.1", 'false'::BOOLEAN "Método 2.2";