度量快速开发平台-专业、快速的软件定制快开平台

标题: MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序 [打印本页]

作者: fteair    时间: 2020-6-18 09:32
标题: MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序
ySQL常规排序、自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序。
下面给出3中比较常用的排序方式,mark一下
1.常规排序ASC DESC
ASC 正序
DESC倒叙
-- 此处不用多讲
2.自定义排序
自定义排序是根据自己想要的特定字符串(数字)顺序进行排序。
主要是使用函数 FIELD(str,str1,str2,str3,...)
MySQL的自定义排序,str与str1、str2、str3...进行比较,并按照str1,str2,str3...的顺序输出,如果遇到str为null或者不存在str1,str2,str3...中的情况的则序列为0,
eg:
SELECT * FROM TEST ORDER BY FIELD(value,'test1','test2','test3','test4') ASC/DESC
eg2:
SELECT * FROM TEST WHERE VALUE IN('test1','test2','test3','test4') ORDER BY FIELD(value,'test1','test2','test3','test4') ASC/DESC -- 保证只满足条件的进行排序
3.按中文拼音字母排序
如果表字段使用的GBK编码的话,我们可以直接order by value ,因为GBK本身就是按照拼音字母排序ABCDEFGHIGK...,当第一位相同的时候会比较第二位,以此类推。 如果表字段使用的UTF-8编码的话,通常我们都会的编码,这样我们可以使用MySQL的convert方法开转换gbk进行排序。
eg:SELECT * FROM TEST ORDER BY CONVERT(value USING GBK) ASC/DESC
以上转自:http://www.2cto.com/database/201704/628360.html
ORACLE和DB2可以借助DECODE函数,自定义顺序排序:
order by decode(字段名, 'aaa', '1', 'bbb', '2', 'ccc', '3', 'ddd', '4', ......,'Total', '99');

作者: fteair    时间: 2020-6-18 14:09

作者: 张兴康    时间: 2020-6-18 14:11
围观围观
作者: fteair    时间: 2020-6-18 14:17
张兴康 发表于 2017-7-18 14:11
围观围观


作者: 张兴康    时间: 2020-6-19 15:06
fteair 发表于 2017-7-18 14:17


作者: caixuqad    时间: 2020-6-19 15:40

作者: caixuqad    时间: 2020-6-25 18:30

作者: caixuqad    时间: 2020-6-26 18:14

作者: fteair    时间: 2020-6-27 14:47
caixuqad 发表于 2017-7-26 18:14

*3




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2