Referencia de funciones

CAST

Convierte un valor al tipo de dato indicado.

MySQL 8.4
CAST(value AS type)
value
Valor que se convierte
type
Tipo de dato de destino; en algunos tipos, con tamaño entre paréntesis
Palabra clave
BINARYCHARDATEDATETIMEDECIMALDOUBLEFLOATJSONNCHARREALSIGNEDTIMEUNSIGNEDYEAR

Valor devuelto

Valor del tipo indicado; una conversión fallida da 0 o NULL con un aviso, no un error

Ejemplos

DECIMAL con y sin decimales

MySQL 8.4
SELECT CAST(12005.6 AS DECIMAL) AS rounded,
	CAST(12005.6 AS DECIMAL(10, 2)) AS with_scale;
roundedwith_scale
1200612005.6

Media con dos decimales

MySQL 8.4
SELECT family_member,
	CAST(AVG(unit_price) AS DECIMAL(10, 2)) AS avg_price
FROM Payments
GROUP BY family_member;
family_memberavg_price
11542.5
210575.43
3505.8
4250
5179.33

Cadenas a números enteros

MySQL 8.4
SELECT CAST('12abc' AS SIGNED) AS number_prefix,
	CAST('abc' AS SIGNED) AS no_number;
number_prefixno_number
120

Detalles

La lista de tipos de destino en MySQL es más corta que la de tipos de columna: para un número entero se escribe SIGNED o UNSIGNED, y CAST(1 AS INT) es un error de sintaxis. Para una cadena se usa CHAR, no VARCHAR.

TipoResultado
DATEFecha en formato AAAA-MM-DD.
DATETIMEFecha y hora en formato AAAA-MM-DD hh:mm:ss.
TIMEHora en formato hh:mm:ss.
DECIMAL[(M[,D])]Número de coma fija: M es el número total de cifras (10 por defecto) y D, el número de decimales (0 por defecto, así que, si no se indica, se redondea la parte decimal).
DOUBLENúmero de coma flotante de doble precisión.
FLOAT[(p)]Número de coma flotante de precisión simple; con p mayor que 24, de doble precisión, como DOUBLE.
REALLo mismo que DOUBLE (salvo si está activo el modo REAL_AS_FLOAT).
CHAR[(N)]Cadena; si indicas N, se recorta a N caracteres.
NCHAR[(N)]Como CHAR, pero en la codificación nacional (utf8mb3).
JSONValor JSON; la cadena debe ser un JSON válido; si no, se produce un error.
SIGNEDNúmero entero con signo (BIGINT). Un número decimal se redondea; de una cadena se leen las cifras del principio.
UNSIGNEDNúmero entero sin signo (BIGINT UNSIGNED). Un número negativo se convierte en uno positivo muy grande.
BINARY[(N)]Cadena binaria: las comparaciones con ella se hacen byte a byte y distinguen mayúsculas y minúsculas.
YEARAño; un número de dos cifras se completa hasta cuatro: 23 pasa a ser 2023 y 70, 1970.

Véase también

Dónde aprenderlo