MySQL
свободно с преобразованиями типов.При неявном преобразовании строки в число, она будет принимать символы с начала строки, пока они являются цифрами, и игнорировать остальные.
В вашем примере "None"
не является цифрой, поэтому MySQL
вернет 0
.
Из Mysql преобразование типов
Для сравнения строкового столбца с номером MySQL не может использовать индекс для столбца для быстрого поиска значения.
Неявное преобразование строки является ужасным для производительности, так как вы теряетеиспользование индекса для вашего столбца
Вот пример для сравнения "2arse"
строки и 2
числа, мы можем видеть, когда ID = "2arse"
вернет ID = 2
данные строкипотому что он будет принимать цифры 2
и игнорировать строку arse
для неявного преобразования.
Схема (MySQL v5.7)
CREATE TABLE sometable(
ID INT
);
INSERT INTO sometable VALUES (0);
INSERT INTO sometable VALUES (2);
Запрос № 1
select distinct id
from sometable
where ID = "2arse";
| id |
| --- |
| 2 |
Просмотр на БД Fiddle