mysql - 即使给定的值不同,MySQL也会找到匹配项
问题描述
我有一个名为 MySQL 的表accounts
,其中存储了有关用户帐户的信息。当我希望为任何特定用户获取信息时,我会使用他们的帐户来执行此id
操作,并且我执行的查询通常如下:
SELECT * FROM `accounts` WHERE `id`="1"
它返回预期结果,即该特定帐户的所有信息。
但是,我很好奇,为了测试,我决定在 id 之后添加一些随机字符和符号。
SELECT * FROM `accounts` WHERE `id`="1dslkfjsd"
我的问题是:为什么 MySQL 认为1dslkfjsd
等于1
?
是因为该列是类型的int
,它会删除任何不是类型的东西int
吗?
截图:
解决方案
是的,使用字符串作为整数会强制转换为整数列类型,相当于:
SELECT CONVERT('1dslkfjsd', SIGNED INTEGER);
如果字符串的第一部分是有效整数,则将其用作返回值,否则您可能会得到 0。
推荐阅读
- spring - 优化属性变量 Spring Cloud
- html - 50% 宽度两列 css
- kubernetes - 准备就绪,但仅在开始时
- python - 带有上传文件和标头的 HTTP Post 请求适用于 Postman,但不适用于 python
- r - 用行值制作列
- r - 在第二个 y 轴上使用 ggplot 绘制变量
- wordpress - 用于 WordPress 可访问性的谷歌标签管理器
- grafana - InfluxDB 在 TOP 函数上聚合并在 Grafana 中显示
- android - 如何设置从当前日期起 1 年的日期?
- javascript - 在Javascript中按字符串和数字属性对JSON数组进行排序