DB中的数据
req表的dtime(毫秒)
718562
688359
617508
521825
432790
4305059
256805
2528112
237190
2334679
22647
1798347
1748652
1046697
首先表中dtime的类型是varchar(至于为何是varchar可能是领导说话“一言九鼎”吧)
表中的数据是按照dtime的倒序排序的,从中可以看到mysql再对varchar类型进行排序的时候,是按照位进行比较的。比如7>6,那么7>61.
SELECT MAX(dtime) FROM req
打印结果![]()
所以取最大值的时候,718562就是最大的了,实际最大值是4305059
解决上述问题,就是要将字符转换成数值型,然后再取最大值,使用mysql的covert函数,CONVERT(字段,类型)
SELECT MAX(CONVERT(dtime,UNSIGNED)) FROM req
打印结果![]()
博客讨论了MySQL中VARCHAR类型字段在排序时出现的问题,由于按照字节比较而非数值,导致错误的最大值。文章提到了如何通过CONVERT函数将varchar转换为UNSIGNED类型来正确获取最大值。内容还涉及了数据类型转换的重要性和最佳实践。
2890

被折叠的 条评论
为什么被折叠?



