Función CAST en PostgreSQL

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;
Función CAST en PostgreSQL

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";

Escribir un comentario