ORACLE按照比划、部首和拼音排序的实现(转)

找了相关的一些资料,都说的不是很清楚,自己也研究了下,终于搞明白了,希望对大家有帮助。 
需要说明的是下面的方法需要ORACLE9i和以上的版本才支持。 
Oracle9i之前,中文是按照二进制编码进行排序的。 
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值 
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序 
SCHINESE_PINYIN_M 按照拼音排序,系统的默认排序方式为拼音排序 

举例如下: 
表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划、部首和拼音排序。 
1: //按照笔划排序 
2: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M'); 
3: //按照部首排序 
4: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M'); 
5: //按照拼音排序,此为系统的默认排序方式 
6: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M'); 


注意,该SQL指令并非标准指令,在SQLServer下面的实现方式并不相同。

posted @ 2011-12-03 09:42  @龙飞凤舞@  阅读(326)  评论(0编辑  收藏  举报