Mysql等数据库对于版本号类型字符串的比较问题的思考

        我现在在一个移动产品部门做移动应用商店的开发,今天突然发现一个bug,那就是mysql数据库比较版本号类字符串时会出问题,正常逻辑是1.10.8比版本1.10.10小,但是按照数据库的字符串比较规则,前者是比后者要大的;由于项目需要查询出版本号大的那条的记录,这样查询出来的结果就有问题了。

当然如何把所有记录查询出来然后再用java处理比较简单,网上还有一些处理版本号的方法,但是由于我所在的项目都是先别sql拼接好,然后一次查询出结果,所以用java代码处理问题需要把那块代码重构,代价比较大;由于我们要兼容mysql,oracle等主流数据库,使用高级函数会引入更多问题,思来想去相当苦恼,还一度想把那块代码重构了...

最后静下心来认真分析了下业务代码,发现应用上传的时候是做了版本号的校验的,就是新上传的应用版本号必须大于旧版本,如第一个版本是1.10.8,下次更新的时候版本要比第一版大,如1.10.10;然后sql查询的时候依然比较版本号查出最新的,但是版本号所在的数据模型里还有其他字段,如上传时间,既然最新上传的应用版本号肯定是最大的,为啥不用max(上传时间)来查询呢...问题就这样解决啦...

复杂的事情简单做,你就是专家...

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值