Справочник по функциям

CAST

Преобразует значение в указанный тип данных.

MySQL 8.1
CAST(value AS type)

Параметры

value
Значение для преобразования
typeключевое слово
Целевой тип данных, у некоторых типов в скобках задаётся размер
Значения:BINARYCHARDATEDATETIMEDECIMALDOUBLEFLOATJSONNCHARREALSIGNEDTIMEUNSIGNEDYEAR

Возвращаемое значение

Значение указанного типа; при неудачном преобразовании — 0 или NULL с предупреждением, а не ошибка

Примеры

DECIMAL с точностью и без

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

Среднее с двумя знаками

MySQL 8.1
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

Строки в целое число

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

Подробности

Список целевых типов в MySQL короче, чем типов столбцов: для целого числа пишут SIGNED или UNSIGNED, а CAST(1 AS INT) — синтаксическая ошибка. Для строки — CHAR, а не VARCHAR.

ТипРезультат
DATEДата в формате ГГГГ-ММ-ДД.
DATETIMEДата со временем в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.
TIMEВремя в формате ЧЧ:ММ:СС.
DECIMAL[(M[,D])]Число с фиксированной точностью: M — общее количество цифр (по умолчанию 10), D — количество цифр после запятой (по умолчанию 0, поэтому без него дробная часть округляется).
DOUBLEЧисло с плавающей точкой двойной точности.
FLOAT[(p)]Число с плавающей точкой одинарной точности; при p больше 24 — двойной, как DOUBLE.
REALТо же, что DOUBLE (если не включён режим REAL_AS_FLOAT).
CHAR[(N)]Строка; если указано N, она обрезается до N символов.
NCHAR[(N)]Как CHAR, но в национальной кодировке (utf8mb3).
JSONЗначение JSON; строка должна быть корректным JSON, иначе ошибка.
SIGNEDЦелое число со знаком (BIGINT). Дробное число округляется, а из строки берутся цифры в её начале.
UNSIGNEDЦелое число без знака (BIGINT UNSIGNED). Отрицательное число превращается в очень большое положительное.
BINARY[(N)]Двоичная строка: сравнение с ней идёт побайтово, с учётом регистра.
YEARГод; двузначное число дополняется до четырёх цифр: 23 превращается в 2023, а 70 — в 1970.

Смотрите также

Где изучить