我有一个如下所示的查询:
`SELECT id, username FROM table_name WHERE username=0`
当我运行此查询时,MySQL 返回 table_name 中的所有行。此外,如果我用 0 代替 false,我会得到相同的结果。如果我使用 null 或空字符串,则不会返回任何行(如预期)。
如果有区别的话,用户名列是 varchar(50)。
我的问题是这样的:
为什么在该查询中输入 0 或 false 会返回表中的所有行?这是 MySQL 设置吗?
这让我有点担心,因为我一直在假设上述查询不会返回任何行(在这种特殊情况下)的情况下进行操作,我想知道这种情况是否发生在我的应用程序的其他地方以及它可能会产生什么意想不到的后果。
username 被转换为 int 0 以进行比较。 0=0 的计算结果为 true,所以这里根本就没有 WHERE 子句。你可以使用username=''
如果您尝试获取非空空白用户名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)