Mysql中对字符串类型的字段进行数字值排序
排序字段+0或者*1,类似 Java 把 其他类型转换成字符串 比如 +“”;
一、对普通数字字符串字段排序
-- 方式一 SELECT * FROM xxxxxx WHERE STATUS = '1' ORDER BY ORDER_NUMBER + 0 DESC -- 方式二 SELECT * FROM xxxxx WHERE STATUS = '1' ORDER BY ORDER_NUMBER * 1 DESC
二、对double字段或其他带小数的金额字段排序
1.利用sql语句中关键字的执行顺序先在select后将字符串转为DECIMAL类型在排序
SELECT SUM( cast( MONEY AS DECIMAL ( 18, 2 ) ) ) MONEYS, USER_ID FROM PRODUCT WHERE TYPE = '1004' GROUP BY USER_ID ORDER BY MONEYS DESC //MONEYS为select转换后的字段值 LIMIT 10
2.sql函数说明
cast():
一、在mysql操作中我们经常需要对数据进行类型转换。此时我们应该使用的是cast()或convert()。
二、两者的对比
相同点:都是进行数据类型转换,实现的功能基本等同
不同点:两者的语法不同,cast(value as type) 、 convert(value,type)
三、所支持的类型如下:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
DECIMAL(xx,x):
MySQL DECIMAL
数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL
数据类型用于保留准确精确度的列
举例说明:DECIMAL(19,9)
对于小数部分具有9
位数字,对于整数部分具有19
位