Mysql 查询,字符串的前部分命中数字类型查询

328 天前
 huisunan

有大佬在知道这是什么情况吗

822 次点击
所在节点    MySQL
4 条回复
LeegoYih
328 天前
https://stackoverflow.com/questions/51544716/mysql-where-clause-accepting-integer-with-strings-on-primary-key-field
简单的说就是字段是 int 而参数是 str ,MySQL 会自作聪明取前面整数部分。
xianlinYI
328 天前
mysql 在你使用字符串类型的数据和数字类型的数据做比较时,会自动把所有数据转位数字类型的数据然后比较。分两种情况:
第一种是你的列是数字类型,查询条件是字符串类型,这种情况转化的时候就丢失掉了字母部分,也就是你现在的情况;
第二种情况是你的列是字符串类型,你的查询条件是数字类型,这种情况就会把你的列做一次函数操作转化成数字类型,和你的查询条件做比较,由此造成的问题就是你该列上的索引会失效;

所以你在设计表和设计查询条件是需要考虑 mysql 的数据类型以防止索引失效
huisunan
328 天前
@LeegoYih 明白了
huisunan
328 天前
@xianlinYI 明白了,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949281

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX