MySQL неявно выполняет преобразования типов данных.
В качестве демонстрации рассмотрим:
SELECT 4 + 1
, ' 4' + 1
, '4tune' + 1
Мы также можем явно преобразовывать типы данных, например, используя CAST
или CONVERT
.
Преобразование из строки в число является простым. Поведение задокументировано в Справочном руководстве MySQL:
https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
Мы можем наблюдать это поведение в конкретном примере. Рассмотрим случай числового литерала:
UPDATE `prog_m` SET prog_descr = 'foo' WHERE prog_id = 42 ;
и сравнение со строковым литералом
UPDATE `prog_m` SET prog_descr = 'bar' WHERE prog_id = '42' ;
^ ^
Если столбец prog_id
является числовым, MySQL выполняет неявное преобразование строкового литерала в числовой.
Если prog_id
является символьным типом, в первом случае MySQL неявно преобразует числовой литерал в строку.
Если prog_id
является столбцом символьного типа, в первом случае MySQL неявно преобразует значения столбца в числовые значения и сравнивает их с числовым литералом.
Также, спасибо за использование подготовленных операторов с заполнителями связывания!