Представим, что у вас есть таблица test с целочисленным полем id.

содержание этой таблицы:

+---------+
| | id |  |
+---------+
| | --- | |
| | 210 | |
+---------+

Запрос

select * from test where id = '210abc'

возвращает результат:

+---------+
| | id |  |
+---------+
| | --- | |
| | 210 | |
+---------+

Почему?

Если вы выполняете сравнение в MySQL между целым числом и строкой, строка преобразуется в целое число. Я думаю, это довольно странное поведение.

Я нашел способ избежать такого поведения, используя cast

select * from test where  CAST(id AS CHAR) = '210abc'

этот код возвращает 0 результатов.

Некоторые интересные наблюдения:

select * from test where  id = 'abc210'

возвращает 0 результатов;

select * from test where  id = '2abc10'

возвращает 0 результатов.

Таким образом, только символы, добавленные в конец строки, обрезаются для преобразования в целое число.