order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出):
一、如果我们只是对于在某个程序中的应用是需要按照如下的方式排序,我们只需在SQL语句级别设置排序方式:
1、按照oracled的默认方式排序:select * from table_name order by col_name (desc|asc);(默认为升序或无序对于升降只有在数字字段);
2、按照自定义的顺序排序: select * from table_name order by decode(col_name,'value1',1,value2',2,value3',3,value4',4,...valueN',N);
二、如果我们只是对于在某个程序中的应用是需要按照如下设置的方式排序,我们只需在SQL语句级别设置排序方式(一般没有设置之前我们系统的中文默认排序方式是按照拼音排序 ):
1、按照拼音排序: select * fromtable_name order by nlssort(col_name,'NLS_SORT=SCHINESE_PINYIN_M');
2、按照笔划排序: select * from table_name order by nlssort(col_name,'NLS_SORT=SCHINESE_STROKE_M');
3、按照部首排序: select * from table_name order by nlssort(col_name,'NLS_SORT=SCHINESE_RADICAL_M');
注意:但是在数据量比较大情况下查询速度会很慢,需要进行进一步优化,按oracle官方文档的解释,oracle在对中文列建立索引时,是按照2进制编码进行排序的,所以如果NLS_SORT被设置为BINARY时,排序则可以利用索引.如果不是2进制排序,而是使用上面介绍的3种针对中文的特殊排序,则oracle无法使用索引,会进行全表扫描.解决方法是,在此列上建立linguistic index.例如:CREATE INDEX nls_index ON my_table (NLSSORT(name, 'NLS_SORT = SCHINESE_PINYIN_M'));
三、如果我们在整个会话中都要使用特定的方式排序的话,我们需要在Session级别的设置字段的默认排序方式:
1.按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
2.按笔画:alter session set nls_sort = SCHINESE_STROKE_M;
3.按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
四、如果我们需要对整个数据做指定的排序方式,就需要修改oracle 服务器系统参数(一般这种方式我们使用的比较少):
1. win系统修改注册表 HKLC\SOFTWARE\ORACLE\home0\NLS_SORT
2.其他修改配置set NLS_SORT=SCHINESE_RADICAL_M export NLS_SORT
order by 按照指定顺序排序或自定义顺序排序相关推荐
- oracle怎么自定义排序,ORACLE自定义顺序排序
ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...
- SQL学习之使用order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出): 一.如果我们只是对于在某个程序中的应用 ...
- 使用order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出): 一.如果我们只是对于在某个程序中的应用 ...
- php对自定义数组进行排序,按照自定义顺序对数组的php数组排序
您可以使用usort()精确地指定数组的排序方式.在这种情况下,可以在比较函数中使用$ order数组. 下面的例子使用closure使生活更容易. $order = array(3452342, 5 ...
- php修改mysql排序_php – 自定义MySQL排序
我有一个需要自定义排序的查询,修剪到最小的东西,如: SELECT u.*, p.*, p.id as product_id FROM users u, products p WHERE u.id = ...
- python给excel排序_Python实现自定义顺序、排列写入数据到Excel的方法
本文实例讲述了Python实现自定义顺序.排列写入数据到Excel的方法.分享给大家供大家参考,具体如下: 例1. 数据框顺序写入Excel: data=a import xlsxwriter wor ...
- 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...
- numpy np.sort()函数(指定对某一轴进行排序,返回数组的排序副本)(成对数组不要用这个排,用哪个啥lexsort()或argsort()都行)
指定对哪一层进行排序,如果需排序的是多维数组,特别是那种np.sort()貌似不太友好 from numpy\core\fromnumeric.py @array_function_dispatch( ...
- db2 某个字段排序_MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序...
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3中比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...
最新文章
- 索引初识一 MySql
- Vue前端-Flask后台跨域访问问题的处理
- 英特尔AIDC秀肌肉:展示AI软硬件+生态全景图
- xss攻击中受影响的是服务器还是客户端,安全测试基础之 XSS
- 推荐一个非常好玩的falsh游戏
- From UI design to system functions and application layer
- Service Manager流程,派BC_REPLY,唤醒FregServer流程,返回BR_TRANSACTION_COMPLETE,睡眠等待proc-gt;wait...
- jenkins构建执行shell 所有命令出现command not found
- php根据身份证号码计算年龄
- 阻抗,特征阻抗与等效阻抗
- matplotlib之pyplot模块之标题(title()和suptitle())
- java常用设计模式之多例模式
- Mysql 数据库空字符串数据去除
- 解放前端工程师——手把手教你开发自己的自定义列表和自定义表单系列之一缘起
- 打开oracle数据库oe,database - Oracle数据库11g:OE.ORDERS表不存在 - SO中文参考 - www.soinside.com...
- linux把一个大文件压缩,linux大文件压缩及解压需要注意问题
- Axure的页面交互
- 基于IIC的温度传感器实验
- MTK开发之—添加aw21024 i2c设备驱动
- 差分+树状数组 线段树【P2357】 守墓人