Consultas · guía rápida

CAST

Convierte un valor de forma explícita, comprueba el tipo resultante y evita depender de reglas implícitas que cambian entre motores.

Lectura: 6–8 minEjemplo paso a pasoPráctica con pistas
Contenido de esta guía

Qué significa

CAST convierte explícitamente una expresión a un tipo de datos de destino. La forma portable es CAST(expresión AS tipo). La conversión solo afecta al valor calculado por esa expresión: no modifica el tipo de la columna almacenada ni limpia los datos originales.

  • Identifica el tipo de origen.
  • Elige un tipo de destino admitido por tu motor.
  • Comprueba si puede perderse información o producirse un error.

Cuándo conviene convertir

Usa una conversión explícita cuando el tipo forme parte del problema: sumar un número recibido como texto, comparar valores compatibles o presentar una salida con un tipo concreto. Evita convertir solo para ocultar un diseño inconsistente. Si una columna almacena números como texto, la solución duradera suele ser corregir el modelo y validar la entrada.

Regla práctica: antes de escribir CAST, pregunta qué representa el valor, a qué tipo debe pasar y qué ocurrirá con los datos que no encajen.

Sintaxis y decisiones

Estructura
CAST(expresión AS tipo)
Tres preguntas antes de convertir
PreguntaEjemploRiesgo que evita
¿Qué tipo tengo?Texto '18'Confundir representación y valor
¿Qué tipo necesito?INTEGERElegir un tipo demasiado impreciso
¿Qué datos pueden fallar?Texto 'dieciocho'Resultados no portables o errores

Ejemplo guiado: convertir antes de calcular

El texto '18' debe participar en una suma numérica. La conversión deja clara esa intención:

SQL
SELECT CAST('18' AS INTEGER) + 7 AS total;
Resultado esperado
total
25

Cómo leer la expresión

  1. '18' es un literal de texto.
  2. CAST(... AS INTEGER) solicita un entero.
  3. La suma se realiza con el valor numérico convertido.
  4. El alias total describe la columna resultante.

Error frecuente

Suponer que una conversión inválida falla igual en todos los motores

Consulta problemática
SELECT CAST('dieciocho' AS INTEGER) AS edad;

Esta entrada no representa un entero válido. PostgreSQL rechaza la conversión; SQLite puede producir 0 por sus reglas de afinidad; SQL Server ofrece alternativas como TRY_CAST para devolver NULL cuando la conversión falla. No construyas lógica portable alrededor de uno de esos resultados: valida el formato antes de convertir.

Comprueba lo aprendido

Básica · apoyo graduado

Calcula una cuota a partir de texto

Convierte el texto “120” a entero, divídelo entre 4 y llama cuota al resultado.

Compatibilidad y matices

CAST es la forma más portable, pero los nombres de tipos y las reglas de conversión no son idénticos. PostgreSQL también acepta la abreviatura expresión::tipo; SQL Server ofrece CONVERT y TRY_CAST; SQLite trabaja con clases de almacenamiento y permite conversiones con pérdida. Para fechas, decimales y texto, comprueba siempre la documentación del motor y prueba datos límite.

Qué debes recordar

  • CAST hace explícito el tipo que necesitas en una expresión.
  • Convertir no repara el dato original ni cambia la definición de la columna.
  • Una entrada inválida puede fallar o producir un resultado distinto según el motor.
  • Comprueba precisión, formato y valores límite antes de publicar la consulta.

Conceptos relacionados

Fuentes técnicas consultadas

La documentación oficial siguiente se consultó para distinguir la sintaxis estándar, las conversiones con pérdida y las extensiones propias de cada motor.