588创业论坛

 找回密码
 快速注册
搜索
查看: 877|回复: 0
打印 上一主题 下一主题

Mysql中因为排序字段数据类型不对会导致排序失灵

[复制链接]
匿名
跳转到指定楼层
1
匿名  发表于 2020-6-5 21:18:37 |倒序浏览
最近在做一个项目,要对数据进行排序显示,结果显示出来的排序老是出错,检测的好久才发现是因为用来排序的那个字段的数据类型不对造成的,我用来排序的那个字段是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
您需要登录后才可以回帖 登录 | 快速注册

Archiver|手机版|588创业网 ( 闽ICP备08003622号-6 )

GMT+8, 2024-12-23 09:44 , Processed in 0.203661 second(s), 25 queries .

Powered by bbs.588cy.com

© 2001-2012 Discuz! X2.5

回顶部