1
LeegoYih 2023-06-16 13:49:28 +08:00 1
https://stackoverflow.com/questions/51544716/mysql-where-clause-accepting-integer-with-strings-on-primary-key-field
简单的说就是字段是 int 而参数是 str ,MySQL 会自作聪明取前面整数部分。 |
2
xianlinYI 2023-06-16 13:59:34 +08:00
mysql 在你使用字符串类型的数据和数字类型的数据做比较时,会自动把所有数据转位数字类型的数据然后比较。分两种情况:
第一种是你的列是数字类型,查询条件是字符串类型,这种情况转化的时候就丢失掉了字母部分,也就是你现在的情况; 第二种情况是你的列是字符串类型,你的查询条件是数字类型,这种情况就会把你的列做一次函数操作转化成数字类型,和你的查询条件做比较,由此造成的问题就是你该列上的索引会失效; 所以你在设计表和设计查询条件是需要考虑 mysql 的数据类型以防止索引失效 |