588创业论坛

标题: Mysql中因为排序字段数据类型不对会导致排序失灵 [打印本页]

作者: 匿名    时间: 2020-6-5 21:18
标题: Mysql中因为排序字段数据类型不对会导致排序失灵
最近在做一个项目,要对数据进行排序显示,结果显示出来的排序老是出错,检测的好久才发现是因为用来排序的那个字段的数据类型不对造成的,我用来排序的那个字段是varchar的数据类型,这会导致在排序的时候只会按照这个字段值的第一个数字来排序,比如这个字段值分别为“2”和“101”的两条数据进行排序,正常应该是值为“2”的这条数据排列在前面,但是就因为排序的这个字段是varchar的数据类型,会导致值为“101”的这条数据排列在前面,这是因为“101”第一个数字是“1”,比“2”靠前,所以就排列在前面。


所以要解决办法就是要先把排序的这个字段的数据类型转换一下,有两种方案:

1、排序字段+0或者*1,类似  Java 把 其他类型转换成字符串 比如 +“”;

WHERE STATUS = '1'  ORDER BY  ORDER_NUMBER + 0 DESC

WHERE STATUS = '1'  ORDER BY  ORDER_NUMBER *1 DESC

2、对double字段或其他带小数的金额字段排序,利用sql语句中关键字的执行顺序先在select后将字符串转为DECIMAL类型在排序

具体可以查看这篇文章介绍:https://www.cnblogs.com/awzf/p/9848458.html




欢迎光临 588创业论坛 (http://bbs.588cy.com/) Powered by Discuz! X2.5