oracle汉字排序
最近项目过程中碰到对于数据进行排序按照升序排序需求。这需求貌似很简单,我没多想直接order by columnName。忽略了汉字排序的问题导致bug的出现。
业务要求,按照excel中排序出来的结果。对于汉字excel默认是按照拼音排序的,那么问题来了,oracle对于汉字究竟是如何排序的?
经查阅资料发现,对于oracle对汉字排序的问题网上说法不一。有的说是根据二进制编码排序的,有的缺说是根据拼音排序的。
自己试了试,肯定默认不是拼音排序。可能是二进制编码吧。
说下具体怎么改,也是转载网上的一些方法。
1、语句级别设置排序方式:
//按照笔划排序
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
//按照部首排序
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
//按照拼音排序,此为系统的默认排序方式
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');
2、Session级别的设置,修改ORACLE字段的默认排序方式:
按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
按笔画:alter session set nls_sort = SCHINESE_STROKE_M;
按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
3、修改系统参数(数据库所在操作系统):
set NLS_SORT=SCHINESE_RADICAL_M ;export NLS_SORT (sh)setenv NLS_SORT SCHINESE_RADICAL_M (csh) HKLCSOFTWAREORACLEhome0NLS_SORT (win注册表);
我这里只是用来语句级别的就可以了。
回到系统默认排序的问题就是设置数据库的NLS_SORT 这个参数
通过查看select * from nls_database_parameters; 数据库参数
我的默认值为BINARY
Oracle 官方说明:
Property |
Description |
Parameter type |
String |
Syntax |
NLS_SORT = { BINARY | linguistic_definition } |
Default value |
Derived from NLS_LANGUAGE |
Modifiable |
ALTER SESSION |
Range of values |
BINARY or any valid linguistic definition name |
- If the value is BINARY, then the collating sequence for ORDER BY queries is based on the numeric value of characters (a binary sort that requires less system overhead).
If the value is a named linguistic sort, sorting is based on the order of the defined linguistic sort. Most (but not all) languages supported by the NLS_LANGUAGE parameter also support a linguistic sort with the same name.
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.
You must use the NLS_SORT operator with comparison operations if you want the linguistic sort behavior.
英文水平有限,大概BINARY 这个意思是二进制编码排序的设定。
oracle汉字排序相关推荐
- oracle中文的升序降序,Oracle汉字排序
Oracle汉字排序 使用一下SQL select * from T_0303003 order by stock_holder 进行选取数据时(stock_holder为存放中文的字段),结果发现两 ...
- oracle 汉字和英文排序,关于oracle对汉字的排序
最近项目过程中碰到对于数据进行排序按照升序排序需求.这需求貌似很简单,我没多想直接order by columnName.忽略了汉字排序的问题导致bug的出现. 业务要求,按照excel中排序出来的结 ...
- oracle汉字默认排序,oracle对汉字排序
汉字排序须综合考虑数据库字符集.NLS_SORT. 查看版本信息: select * from v$version; 查看数据库字符集: SELECT userenv('language') FROM ...
- Java汉字排序(3)按笔划排序
对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...
- oracle 分组排序 update,oracle分组排序
oracle 分组排序: 这个麻烦: SELECT * FROM ( SELECT deptno,ename,sal,ROW_NUMBER() OVER (PARTITION BY deptno OR ...
- Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)
这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母. 支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下 传统的 : List list = new ArrayLi ...
- oracle分组排序
oracle 分组排序: 这个麻烦: SELECT * FROM ( SELECT deptno, ename, sal, ROW_NUMBER() OVER (PARTITION B ...
- NSArray利用Cocoa框架进行汉字排序
NSArray利用Cocoa框架进行汉字排序 NSArray利用Cocoa框架进行汉字排序 在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一 ...
- oracle顺序读发散读,Oracle 拼音排序
Oracle 拼音排序 (2011-04-05 16:07:36) 标签: 杂谈 找了相关的一些资料,都说的不是很清楚,自己也研究了下,终于搞明白了,希望对大家有帮助. 需要说明的是下面的方法需要OR ...
最新文章
- 最完美的ASCII 表
- Linux下ssh登录速度慢的解决办法
- 海量日志分析方案--logstash+kibnana+kafka
- 终端、虚拟控制台与伪终端
- verilog数字跑表设计实现与仿真
- MongoDB学习笔记(一)--基础
- Flume 中文入门手冊
- python 归一化还原_对python3 一组数值的归一化处理方法详解
- C基础——文本格式和二进制格式的区别
- 十一、Oracle学习笔记:高级关联查询
- 应用程序框架实战四:你需要应用程序框架吗
- Python基础:pip的安装与卸载
- 图像算法工程师三重境界
- Jenkins 汉化
- Ghost的一些使用方法
- java实现概率抽奖
- linux oracle流复制文件,【学习笔记】Oracle ASM linux dd命令复制asm中文件 操作磁盘或者分区...
- NAACL 2022 | 字节和加州大学提出ConST模型,探讨对比学习如何助力语音翻译?
- 基于人工智能的5G无线网规划和优化
- 科技云报道:历经四年,RPA走向同质化?
热门文章
- 国内常用公共DNS服务器、各省运营商DNS服务器汇总
- matlab 三维 作图 坐标轴_matlab三维画图
- 数据中台与数据湖概念认知
- python PIL库对图片按比例进行分割
- php计算两个地点的距离
- stm32f103 延时20ns,在STM32上生成C中的纳秒延迟
- 微信消息推送神器【一封传话】介绍,让消息推送更简单
- 一个安全的邮件习惯如何练成的
- Android绘图(二)使用 Graphics2D 实现动态效果
- 服务器如何选择固态硬盘,为什么绝大数服务器还使用机械硬盘,而不选固态硬盘呢?...