我有一个名为MySQL的accounts表,其中存储了关于用户帐户的信息。当我希望获取任何特定用户的信息时,我使用他们的帐户id来获取信息,我执行的查询通常如下所示:
SELECT * FROM `accounts` WHERE `id`="1"并返回预期的结果,所有关于该特定帐户的信息。
然而,我很好奇,为了测试,我决定在id之后添加一些随机字符&符号。
SELECT * FROM `accounts` WHERE `id`="1dslkfjsd" 我的问题是:为什么MySQL认为1dslkfjsd等于1?
是因为这个列是int类型的,它去掉了任何不是int的东西吗?
截图:


发布于 2019-01-09 10:40:54
当比较具有不同数据类型的字段时,应用转换规则。
来自文献资料:
在您的用例中,当转换为一个数字时,1dslkfjsd变成了1。
发布于 2019-01-09 10:39:36
是的,使用字符串作为整数强制转换为整数列类型,相当于:
SELECT CONVERT('1dslkfjsd', SIGNED INTEGER);如果字符串的第一部分是有效整数,则它用作返回值,否则很可能会得到0。
https://stackoverflow.com/questions/54107847
复制相似问题