MySQL 条件“equal”显示条件“like”属性

mysql condition 'equal' shows condition 'like' attributes

提问人:Austin Xian 提问时间:12/20/2022 更新时间:12/20/2022 访问量:28

问:

select * from order_info where order_id = 48;

上面的mysql命令显示是一个非常简单的句子,但是下面的结果似乎不符合我的期望,它更像是like条件。检索结果

我不知道字段类型是否会影响结果,因为字段“order_id”是 varchar 类型。当我将条件更改为“其中 order_id = '48'”时,它符合我的期望。

谁能告诉我为什么会这样?为什么条件“相等”会显示出意想不到的结果?

我希望结果应该是空的,因为表中没有order_id等于 48 的记录。

mysql select where-clause 类似 SQL 的相等性

评论

0赞 Nico Haase 12/20/2022
请分享更多细节。为什么尝试在不包含整数的列上使用基于整数的子句?预期结果是什么?WHERE
1赞 P.Salmon 12/20/2022
这是整数比较的预期行为:mysql 会摘取第一个 alpha 字符之前的所有字符。
0赞 Jawwad Haider 12/20/2022
在此处阅读有关 @P.Salmon 评论的信息,这将清除您链接上的内容

答:

0赞 P.Salmon 12/20/2022 #1

考虑一下——

SELECT CAST('48KKKK' AS INT);

你可能会期望它失败,它没有,结果是 48。您的查询在比较之前隐式转换订单 ID,因为您正在与整数进行比较,因此您的查询结果是正确的,并且需要记住这一点。

评论

0赞 Austin Xian 3/28/2023
感谢您的回复,但我仍然想知道为什么它会认为订单 ID “48”等于“48jkt3....”。即使在从 48 隐式转换为“48”之后?