Mysql 给我不相关的结果

标签 mysql select

我是 Mysql 新手,有一个表,我将在其中基于整数列进行选择,问题是当我在此列上使用字符串时!我没有收到错误,但它返回了所有行。例如:

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

它给了我 20 行!怎么了?我做错了什么还是因为其他原因?

最佳答案

这是 MySql 的正常行为,因为在此表达式中:

Cat='hello'

发生的情况是字符串文字 'hello'INTEGER隐式转换,如 Type Conversion in Expression Evaluation 中所述。此转换的结果是 0,因此表达式相当于:

Cat=0

如果您想阻止此转换,您可以将 Cat 列转换为字符串:

WHERE CONVERT(Cat, CHAR) = 'hello'

这样,Cat'hello' 的比较将是字母数字,并且会失败。
但如果你传递一个有效的整数,那么将返回正确的结果。

关于Mysql 给我不相关的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457634/

相关文章:

mysql - 多对多关系中每组最大的 n

mysql - MySQL 中的自定义函数

Angular2 [selected] 设置默认值不起作用?

javascript - 如何使用 Highcharts 从数据库传入一系列数据来制作多个 Y 轴

mysql - 从数据库中选择今天和明天的记录

mysql datetime索引列 - 不同的查询响应时间

sql - PostgreSQL 使数据以 5 为步长进入区间

MySQL:SELECT IF() 语句中的 SELECT

mysql - SQL 选择具有缺失值的行

javascript - 如何仅针对用户选择的项目从数据库中获取 "project Id"到弹出表单上?