首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使给定的值不相同,MySQL也会找到匹配。

问即使给定的值不相同,MySQL也会找到匹配。
EN

Stack Overflow用户
提问于 2019-01-09 10:20:48
回答 2查看 26关注 0票数 1

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

代码语言:javascript
复制
SELECT * FROM `accounts` WHERE `id`="1"

并返回预期的结果,所有关于该特定帐户的信息。

然而,我很好奇,为了测试,我决定在id之后添加一些随机字符&符号。

代码语言:javascript
复制
SELECT * FROM `accounts` WHERE `id`="1dslkfjsd" 

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

是因为这个列是int类型的,它去掉了任何不是int的东西吗?

截图:

​

​

​

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-09 10:40:54

当比较具有不同数据类型的字段时,应用转换规则。

来自文献资料:

  • 如果比较操作中的两个参数都是字符串,则将它们作为字符串进行比较。
  • 如果这两个参数都是整数,则将它们作为整数进行比较。
  • ..。
  • 在所有其他情况下,参数被比较为浮点数(实数).

在您的用例中,当转换为一个数字时,1dslkfjsd变成了1。

票数 1
EN

Stack Overflow用户

发布于 2019-01-09 10:39:36

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

代码语言:javascript
复制
SELECT CONVERT('1dslkfjsd', SIGNED INTEGER);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54107847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档