MySQL запрос показывает неверный результат - PullRequest
0 голосов
/ 03 января 2019

У меня таблица базы данных выглядит так

+======+===========+============+
|  ID  | user Name |user surname|
+======+===========+============+
| 100  |  name     |  surname   |
| 101  |  name     |  surname   |
| 102  |  name     |  surname   |
+===============================+

Когда я запускаю этот запрос, который не должен показывать мне строки, потому что нет строки со значением 101foo2:

SELECT * FROM tableName WHERE ID = '101foo2'

Я получаю результат с тем же идентификатором без foo2 слова

+======+===========+============+
|  ID  | user Name |user surname|
+======+===========+============+
| 101  |  name     |  surname   |
+===============================+

как отображается строка с идентификатором 101, если мой запрос ID = '101foo2'

1 Ответ

0 голосов
/ 03 января 2019

Вы смешиваете типы.ID - это целое число (или число).Вы сравниваете это со строкой.Итак, MySQL должен решить, какой тип использовать для сравнения.Какие типы привыкают?Ну что за ниточка?Номер.Строка преобразуется в число, используя первые цифры.Таким образом, оно становится 101 и совпадает.

Вы должны действительно сравнивать только числа с числами, а строки со строками.Вы можете попытаться написать код как:

SELECT * FROM tableName WHERE ID = 101foo2

Однако вы получите ошибку.Другая возможность заключается в принудительном преобразовании в строку:

SELECT * FROM tableName WHERE CAST(ID as CHAR) = '101foo2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...