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

posted @ 2018-10-25 10:57  我风依旧  阅读(26322)  评论(0编辑  收藏  举报