SQL学习之使用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'));
引用原文:Note:
Setting NLS_SORT to anything other than BINARY causes a sort to use a full table scan, regardless of the path chosen by the optimizer. BINARY is the exception because indexes are built according to a binary order of keys. Thus the optimizer can use an index to satisfy the ORDER BY clause when NLS_SORT is set to BINARY. If NLS_SORT is set to any linguistic sort, the optimizer must include a full table scan and a full sort in the execution plan.
三、如果我们在整个会话中都要使用特定的方式排序的话,我们需要在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
SQL学习之使用order by 按照指定顺序排序或自定义顺序排序相关推荐
- SQL学习之使用order by 依照指定顺序排序或自己定义顺序排序
我们通常须要依据客户需求对于查询出来的结果给客户提供自己定义的排序方式,那么我们通常sql须要实现方式都有哪些,參考很多其它资料总结例如以下(不完好的和错误望大家指出): 一.假设我们仅仅是对于在某个 ...
- order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出): 一.如果我们只是对于在某个程序中的应用 ...
- 使用order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出): 一.如果我们只是对于在某个程序中的应用 ...
- SQL数据分析:sqlzoo官网学习select,where,order by,limit,聚合函数,having,常用函数,窗口函数,表链接,子查询
SQL数据分析: 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金 ...
- sql学习练习题_学习SQL:练习SQL查询
sql学习练习题 Today is the day for SQL practice #1. In this series, so far, we've covered most important ...
- sql学习指南_SQL格式功能的全面指南
sql学习指南 This article explains the usage of SQL Format function and performance comparison with SQL C ...
- python与SQL学习比较
目录:python与SQL比较学习 数据字段包含:自增id,订单时间ts,用户id,订单id,订单金额 1.limit 查看全部数据或前n行数据 1.查看全部数据或前n行数据 查看全部数据,panda ...
- SQL学习(2):大厂真题实例-视频平均播放进度
SQL学习(2):大厂真题实例-视频平均播放进度 题目来源:<牛客题霸:SQL大厂真题>: 01 某音短视频 SQL2 平均播放进度大于60%的视频类别 文章目录 SQL学习(2):大厂真 ...
- SQL学习笔记——Select查询语句
使用数据库和表的主要目的是存储数据以便在需要时进行检索.统计或组织输出. SELECT 语句,它是 T-SQL 的核心.从数据库中检索行,并允许从一个或多个表中选择一个 或多个行或列. 虽然 SELE ...
最新文章
- 总以为自己走的很快,才发现自己是走的最慢的那个
- 比特币现金是世界上最好货币的十大理由
- 为了方便读者检索和阅读以往的内容,已开通“号内搜”功能
- c+和python有什么不同-Python和C区别该如何理解?如何适应这种区别?
- Hierarchy of Log-Cauchy
- android布局如何空行,借用你的思路和框架,修复了空行、偶尔setText无效、padding设置的bug...
- python3 执行系统命令_Python3 执行系统命令并获取实时回显功能
- matlab图像采集程序,用摄像头连续采集、保存图像源程序
- Qt学习笔记-带TCP数据传输的局域网聊天软件
- 前端基础知识总结 (三)
- 7部必看的纪录片,每一部都堪称经典,让人叹为观止!
- 安卓开机画面_为了安卓系统,入手文石BOOX Poke Pro电子书阅读器
- C语言指针(函数指针数组,二级指针)
- 数据结构考研复习 | Fibonacci数列的递归、数组、迭代(循环)实现及其时间复杂度
- AI虚拟模特会被普及吗?
- 出圈c语言,c语言作业 出圈游戏
- java IO读写文件详细介绍
- 神啊,请让我丑一点吧
- 【Practical】等价关系
- 华为PPPOE协议+配置
热门文章
- html 设置响应X-frame,X-Frame-Options(点击劫持)漏洞分析及web配置修复
- wireshark抓包分析(二)之链路层Frame
- 计算机图书封面也疯狂
- CSDN,我来了!kbd哈哈哈哈/kbd
- 彗星mysql_【What if 系列】彗星与棒球
- 手动解除fail2ban的ip
- 手机断触怎么办_手机屏幕断触怎么办?弹片微针模组解决手机屏幕测试难题
- 基于蓝牙与Android设备的控制系统设计
- 《安富莱嵌入式周报》第266期:真正模拟DA神的威力,全开源nV级测量仪表挑战赛结束,欣赏震撼设计过程
- 激光雷达学习笔记(一)数据采集