Mysql дает мне несвязанные результаты - PullRequest
0 голосов
/ 18 октября 2019

Я новичок в Mysql и у меня есть таблица, в которой я собираюсь выбирать на основе целочисленного столбца, проблема в том, что когда я использую строку в этом столбце! Я не получил ошибку, но он возвращает мне все строки. например:

SELECT * FROM `News` WHERE Cat='hello' order by id desc limit 20

Это дает мне 20 строк! в чем дело? я сделал что-то не так или это из-за чего-то другого?

1 Ответ

0 голосов
/ 19 октября 2019

Это нормальное поведение для MySql, потому что в этом выражении:

Cat='hello'

происходит неявное преобразование строкового литерала 'hello' в INTEGER и какописано в Преобразование типов в оценке выражений результат этого преобразования равен 0, поэтому выражение эквивалентно:

Cat=0

Если вы хотите предотвратить это преобразование, вы можете вместо этогопреобразовать столбец Cat в строку:

WHERE CONVERT(Cat, CHAR) = 'hello'

Таким образом, сравнение Cat и 'hello' будет буквенно-цифровым и завершится неудачей. Но если вы передадите правильное целое число, вернется правильный результат.

...