码迷,mamicode.com
首页 > 数据库 > 详细

oracle的order by 中文排序原理

时间:2020-01-17 11:39:24      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:汉语拼音   col   style   字符   存在   中文   oracle   完全   oracl   

近期发现oracle的order by中文排序并不是完全按照拼音排序的

经过测试发现oracle的order by中文排序是按照中文的ASCII码排序的

查询字符ASCII码

select ascii() from dual;

这里说一下oracle中的汉字分类:

一级汉字,是最常用的汉字,按汉语拼音字母顺序排列,共3755个;
二级汉字,属于次常用汉字,按偏旁部首的笔划顺序排列,共3008个

所以可能存在一些二级汉字的首字母是一级汉字的首字母之前的,会排序在一级汉字之后

正确排序方式:

1.按照拼音顺序
ORDER BY nlssort(NAME, NLS_SORT=SCHINESE_PINYIN_M);

2.按照部首顺序
ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_RADICAL_M‘);

3.按照笔画顺序
ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_STROKE_M‘);

结束

oracle的order by 中文排序原理

标签:汉语拼音   col   style   字符   存在   中文   oracle   完全   oracl   

原文地址:https://www.cnblogs.com/zktww/p/12204912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!