Функции преобразования типов, CAST
Когда мы выполняем операции со значениями с разными типами данных, СУБД пытается выполнить преобразование и привести используемые значения к нужному типу. Например, в примере ниже мы сравниваем значения с типами STRING и INT. Чтобы выполнить это сравнение MySQL автоматически сконвертирует строковое значение в числовое.
SELECT '50' > 49, '50' > 51;
Но не все преобразования СУБД может сделать автоматически, и тогда необходимо делать явное преобразование типов. Для этого в MySQL есть две очень схожие функции CAST и CONVERT.
Синтаксис
CAST(значение AS тип_для_конвертации); CONVERT(значение, тип_для_конвертации);
Например,
SELECT CAST(12005.6 AS DECIMAL), CONVERT(12005.4, DECIMAL);
Функция CAST умеет конвертировать переданное значение в любой из следующих типов:
Невозможность любой конвертации
Использование функции CAST накладывает требования к формату исходного значения. И сразу же напрашивается вопрос, что произойдёт, если данный формат не будет соответствовать необходимому? Например, если попробовать сконвертировать случайный текст во временной тип данных:
SELECT CAST('SQL Academy' AS DATETIME);
В этом случае MySQL вернёт NULL вместо сконвертированного значения.
Самопроверка
Итак, за что отвечает функция CAST в SQL 🧐?