首页 > 解决方案 > 即使给定的值不同,MySQL也会找到匹配项

问题描述

我有一个名为 MySQL 的表accounts,其中存储了有关用户帐户的信息。当我希望为任何特定用户获取信息时,我会使用他们的帐户来执行此id操作,并且我执行的查询通常如下:

SELECT * FROM `accounts` WHERE `id`="1"

它返回预期结果,即该特定帐户的所有信息。
但是,我很好奇,为了测试,我决定在 id 之后添加一些随机字符和符号。

SELECT * FROM `accounts` WHERE `id`="1dslkfjsd" 

我的问题是:为什么 MySQL 认为1dslkfjsd等于1

是因为该列是类型的int,它会删除任何不是类型的东西int吗?

截图:


在此处输入图像描述


在此处输入图像描述

标签: mysql

解决方案


是的,使用字符串作为整数会强制转换为整数列类型,相当于:

SELECT CONVERT('1dslkfjsd', SIGNED INTEGER);

如果字符串的第一部分是有效整数,则将其用作返回值,否则您可能会得到 0。


推荐阅读