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

ORACLE的order by中文排序

时间:2014-08-04 21:12:17      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   使用   2014   line   log   c   

在使用order by排序的时候,出现如下情况:

bubuko.com,布布扣

 

印象中中文排序应该默认是按照拼音排序的,为何“鑫”会排在“中”的后面呢?猜想order by是不是根据对应字符的ASCII码排的呢,因此列出了对应的ASCII,如下:

bubuko.com,布布扣

 

由此基本可以断定,确实是通过ASCII的大小来排序的,这也解释了为什么数字会排在字母之前,字母为什么会排在汉字之前的现象。但是为什么会出现汉字默认是通过拼音排序的错觉呢,于是查了一下汉字的编码规则,有提到如下一句:

 

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

可知,如果排序的汉字都是一级汉字的话,确实是按照拼音顺序排列的,如果涉及到二级汉字,就不一定了。

 

但是,如果就是要让汉字通过拼音顺序排序呢,可以通过如下方式:

bubuko.com,布布扣

 

按照拼音顺序

ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_PINYIN_M‘)

 

按照部首顺序

ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_RADICAL_M‘)

 

按照笔画顺序

ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_STROKE_M‘)

ORACLE的order by中文排序,布布扣,bubuko.com

ORACLE的order by中文排序

标签:style   blog   http   使用   2014   line   log   c   

原文地址:http://www.cnblogs.com/jsllgjk/p/3890744.html

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