В вашем случае столбец
story_id
имеет тип данных INT
(или числовой).
В этом случае MySQL выполняет автоматическое приведение типов.Таким образом, 5bff82...
получает типизированное значение 5
, и, таким образом, вы получаете строку, соответствующую story_id
= 5
Преобразование типов в оценке выражений
Когда оператор используется с операндами различных типов, происходит преобразование типов для обеспечения совместимости операндов.Некоторые преобразования происходят неявно.Например, MySQL автоматически преобразует строки в числа по мере необходимости, и наоборот.
Теперь, в идеале, код вашего приложения должен быть достаточно устойчивым для обработки этого ввода.Если вы ожидаете, что входные данные будут только числовыми, то код вашего приложения может использовать операции проверки данных (чтобы убедиться, что это только число без преобразования типов) перед отправкой его на сервер MySQL.
Другим способом будетявно указать тип story_id
в виде строкового типа и затем выполнить сравнение.Однако это не рекомендуемый подход , так как он не сможет использовать индексирование.
SELECT * FROM story
WHERE (CAST story_id AS CHAR(12)) = '5bff82...'
Если вы выполните вышеуказанный запрос, вы не получите результатов.