因为后台所有表ID都是按照雪花算法生成的18位数字,需要对接到Android,Ios和H5,此时H5会出现字符超长溢出,所以直接把ID改为varchar类型. 如我的一张表ID为varchar(18)类型,此时下面两种查询会有不同的结果,查询where条件中不带引号和带引号 和 可以看出来,第二行查询结果是正确的.原因是当类型不长一致的时候,Mysql会自动做以下转化: 一个为TIMESTAMP或者是DATETIME,另一个为常量,常量会转化为TIMESTAMP,再进行比较 一个为DECIMAL…