Это нормальное поведение для MySql, потому что в этом выражении:
Cat='hello'
происходит неявное преобразование строкового литерала 'hello'
в INTEGER
и какописано в Преобразование типов в оценке выражений результат этого преобразования равен 0
, поэтому выражение эквивалентно:
Cat=0
Если вы хотите предотвратить это преобразование, вы можете вместо этогопреобразовать столбец Cat
в строку:
WHERE CONVERT(Cat, CHAR) = 'hello'
Таким образом, сравнение Cat
и 'hello'
будет буквенно-цифровым и завершится неудачей. Но если вы передадите правильное целое число, вернется правильный результат.