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
CAST(expresión AS tipo)| Pregunta | Ejemplo | Riesgo que evita |
|---|---|---|
| ¿Qué tipo tengo? | Texto '18' | Confundir representación y valor |
| ¿Qué tipo necesito? | INTEGER | Elegir 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:
SELECT CAST('18' AS INTEGER) + 7 AS total;| total |
|---|
| 25 |
Cómo leer la expresión
'18'es un literal de texto.CAST(... AS INTEGER)solicita un entero.- La suma se realiza con el valor numérico convertido.
- El alias
totaldescribe la columna resultante.
Error frecuente
Suponer que una conversión inválida falla igual en todos los motores
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
Calcula una cuota a partir de texto
Convierte el texto “120” a entero, divídelo entre 4 y llama cuota al resultado.
INTEGER.CAST, añade / 4 AS cuota.Solución razonada
SELECT CAST('120' AS INTEGER) / 4 AS cuota;| cuota |
|---|
| 30 |
El resultado esperado es 30. La consulta comunica que el valor de origen llega como texto y que la división debe ser numérica.
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
CASThace 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.