最近项目过程中碰到对于数据进行排序按照升序排序需求。这需求貌似很简单,我没多想直接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汉字排序相关推荐

  1. oracle中文的升序降序,Oracle汉字排序

    Oracle汉字排序 使用一下SQL select * from T_0303003 order by stock_holder 进行选取数据时(stock_holder为存放中文的字段),结果发现两 ...

  2. oracle 汉字和英文排序,关于oracle对汉字的排序

    最近项目过程中碰到对于数据进行排序按照升序排序需求.这需求貌似很简单,我没多想直接order by columnName.忽略了汉字排序的问题导致bug的出现. 业务要求,按照excel中排序出来的结 ...

  3. oracle汉字默认排序,oracle对汉字排序

    汉字排序须综合考虑数据库字符集.NLS_SORT. 查看版本信息: select * from v$version; 查看数据库字符集: SELECT userenv('language') FROM ...

  4. Java汉字排序(3)按笔划排序

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  5. oracle 分组排序 update,oracle分组排序

    oracle 分组排序: 这个麻烦: SELECT * FROM ( SELECT deptno,ename,sal,ROW_NUMBER() OVER (PARTITION BY deptno OR ...

  6. Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)

    这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母. 支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下 传统的 : List list = new ArrayLi ...

  7. oracle分组排序

    oracle 分组排序: 这个麻烦: SELECT * FROM (      SELECT deptno, ename, sal, ROW_NUMBER()    OVER (PARTITION B ...

  8. NSArray利用Cocoa框架进行汉字排序

    NSArray利用Cocoa框架进行汉字排序 NSArray利用Cocoa框架进行汉字排序 在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一 ...

  9. oracle顺序读发散读,Oracle 拼音排序

    Oracle 拼音排序 (2011-04-05 16:07:36) 标签: 杂谈 找了相关的一些资料,都说的不是很清楚,自己也研究了下,终于搞明白了,希望对大家有帮助. 需要说明的是下面的方法需要OR ...

最新文章

  1. 最完美的ASCII 表
  2. Linux下ssh登录速度慢的解决办法
  3. 海量日志分析方案--logstash+kibnana+kafka
  4. 终端、虚拟控制台与伪终端
  5. verilog数字跑表设计实现与仿真
  6. MongoDB学习笔记(一)--基础
  7. Flume 中文入门手冊
  8. python 归一化还原_对python3 一组数值的归一化处理方法详解
  9. C基础——文本格式和二进制格式的区别
  10. 十一、Oracle学习笔记:高级关联查询
  11. 应用程序框架实战四:你需要应用程序框架吗
  12. Python基础:pip的安装与卸载
  13. 图像算法工程师三重境界
  14. Jenkins 汉化
  15. Ghost的一些使用方法
  16. java实现概率抽奖
  17. linux oracle流复制文件,【学习笔记】Oracle ASM linux dd命令复制asm中文件 操作磁盘或者分区...
  18. NAACL 2022 | 字节和加州大学提出ConST模型,探讨对比学习如何助力语音翻译?
  19. 基于人工智能的5G无线网规划和优化
  20. 科技云报道:历经四年,RPA走向同质化?

热门文章

  1. 国内常用公共DNS服务器、各省运营商DNS服务器汇总
  2. matlab 三维 作图 坐标轴_matlab三维画图
  3. 数据中台与数据湖概念认知
  4. python PIL库对图片按比例进行分割
  5. php计算两个地点的距离
  6. stm32f103 延时20ns,在STM32上生成C中的纳秒延迟
  7. 微信消息推送神器【一封传话】介绍,让消息推送更简单
  8. 一个安全的邮件习惯如何练成的
  9. Android绘图(二)使用 Graphics2D 实现动态效果
  10. 服务器如何选择固态硬盘,为什么绝大数服务器还使用机械硬盘,而不选固态硬盘呢?...