首页 > 其他分享 >改变Oralce 对简体汉字的排序规则(拼音、部首、笔画)转

改变Oralce 对简体汉字的排序规则(拼音、部首、笔画)转

时间:2022-11-15 16:32:22浏览次数:81  
标签:Oralce 顺序 笔画数 部首 简体 secooler sec 排序 order


如果​数据库​​字符集选用的是ZH16GBK,那么使用order by默认是按照汉字的“二进制编码”顺序进行排序的。有方法改变这个默认规则么?
答案是肯定的,​​Oracle​​针对简体中文提供三种排序方法,主要是围绕“​拼音​​”、“​部首​​”和“​笔画​​数”展开的。
通过​​实验​​,给大家展示一下NLSSORT在改变简体汉字排序规则方面的魅力。

1.在Oracle的官方文档中关于排序有如下描述
“Linguistic Sorts”
​​​ http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/applocaledata.htm#sthref2000​​​ 其中表“Table A-15 Multilingual LInguistic Sorts”中我们关注一下有关中文排序的内容(前三条与简体中文排序有关,后两条与繁体中文排序有关):
1)SCHINESE_RADICAL_M
Simplified Chinese sort based on radical as primary order and number of strokes order as secondary order
注释:简体中文按照第一顺序是“部首”第二顺序是“笔画数”进行排序;

2)SCHINESE_STROKE_M
Simplified Chinese sort uses number of strokes as primary order and radical as secondary order
注释:简体中文按照第一顺序“笔画数”是第二顺序是“部首”进行排序;

3)SCHINESE_PINYIN_M
Simplified Chinese PinYin sorting order
注释:简体中文按照“拼音”进行排序;

4)TCHINESE_RADICAL_M
Traditional Chinese sort based on radical as primary order and number of strokes order as secondary order
注释:繁体中文按照第一顺序是“部首”第二顺序是“笔画数”进行排序;

5)TCHINESE_STROKE_M
Traditional Chinese sort uses number of strokes as primary order and radical as secondary order. It supports supplementary characters.
注释:繁体中文按照第一顺序“笔画数”是第二顺序是“部首”进行排序;

2.创建实验表T,并初始化六条记录
sec@secooler> create table t (x varchar2(10));
sec@secooler> insert into t values ('侯');
sec@secooler> insert into t values ('你');
sec@secooler> insert into t values ('做');
sec@secooler> insert into t values ('拉');
sec@secooler> insert into t values ('推');
sec@secooler> insert into t values ('拆');
sec@secooler> commit;
sec@secooler> select * from t;

X
------------------------------







6 rows selected.

3.确认数据库版本和数据库字符集
sec@secooler> select * from v$version;

BANNER
----------------------------------------------------------------------------
Oracle Database ​​11g​​ Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

sec@secooler> select userenv('language') from dual;

USERENV('LANGUAGE')
-----------------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

4.在此环境下,查看默认的汉字排序规则
sec@secooler> select * from t order by x;

X
------------------------------







6 rows selected.

可见,此时的默认汉字排序规则是“拼音”。

5.使用nlssort强制按照拼音排序的方法
sec@secooler> select * from t order by nlssort(x,'NLS_SORT=SCHINESE_PINYIN_M');

X
------------------------------







6 rows selected.

6.使用nlssort强制按照“部首”(第一顺序)和“笔画数”(第二顺序)排序的方法
sec@secooler> select * from t order by nlssort(x,'NLS_SORT=SCHINESE_RADICAL_M');

X
------------------------------







6 rows selected.

单人旁的汉字在前,提手旁汉字在后;单人旁的三个汉字进一步又是按照笔画数多少进行的排序。

7.使用nlssort强制按照“笔画数”(第一顺序)和“部首”(第二顺序)排序的方法
sec@secooler> select * from t order by nlssort(x,'NLS_SORT=SCHINESE_STROKE_M');

X
------------------------------







6 rows selected.

可见,越往后的汉字的笔画数越多。

8.Oracle官方文档中关于NSLSORT函数的描述参考
http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions111.htm#SQLRF00678

9.小结
NSLSORT函数在国际化支持上提供了一个非常好的排序解决方案。在具体应用环境下有其重要的意义。善用之。

Good luck.

标签:Oralce,顺序,笔画数,部首,简体,secooler,sec,排序,order
From: https://blog.51cto.com/u_15760318/5853180

相关文章

  • 如何在Visual Studio 2010旗舰版本下安装Window Phone 7 简体中文开发环境
    微软官方提供的WindowPhone7开发工具包是VisualStudio2010ExpressforWindowPhone7(学习版或快捷版),使用该版本有个问题是,不能打开传统的VisualStudio工程(如:WinFor......
  • Oralce资识点汇总
    启服务1.linux下启动oraclesu-oracleesqlplus/nologconn/assysdbastartupexitlsnrctlstartexit停服务2.linux下关闭oraclesu-oraclesqlplus/nolog......
  • C#MSDN简体中文 最后一版本 2007年的
    我在学习C#需要先看MSDN文档,英文看的很吃力,就找了好久MSDN简体中文版本的;因为微软已经关闭网站(MSDN中文的链接),我找到的就是 磁力链接的;我分享出来,有需要的自行下......
  • diskgenius简体中文版(DiskGenius简体中文版)
    diskgenius硬盘修复工具怎么?diskgenius硬盘修  vmdk”文件)。打开虚拟硬盘文件后,即可像操作普通硬盘一样操作虚拟硬盘;可在不启动VMWare虚拟机的情况下从虚拟硬盘复制文件......
  • Microsoft_Visual_C++_6-0简体中文版
    软件截图​安全认证官方版评价等级⭐️⭐️⭐️⭐️⭐️发布时间2011-10-1719:47:56更新时间2013-07-0219:47:562022-10-2023:24:10软件版本V6.0应用平台Win2003/Wi......
  • Windows 10, version 22H2 (released Oct 2022) 简体中文版、英文版下载
    请访问原文链接:https://sysin.org/blog/windows-10/,查看最新版。原创作品,转载请保留出处。Windows10版本信息2022/10/19从Windows10版本21H2开始,Windows10版......
  • 一台服务器上安装多个oralce
    目前已经在运行了oralce11g安装目录/u01计划安装19c,安装目录u02环境:OS:Centos6.9 1.创建新的oracle01账号[root@localhostoracle]#useradd-goinstall-Gdbao......
  • 拳皇13 for Mac(KOF 13)v1.0简体中文版
    《拳皇XIII》是由SNKPLAYMORE研发的一款格斗对战类游戏,于2010年7月14日发行。该作是《拳皇》系列的第13作,也是接续《拳皇2003》、《拳皇XI》之后的“阿修篇”三部曲完结篇......
  • Oralce只给某个用户授权几张表的权限
    首先那几张表不属于这个用户user1。然后登录那几张表所在的用户user2(或管理员),connuser2/passwordgrantselectontable1touser1;grantselectontable2touser......
  • Oralce的RMAN备份、恢复
     1、set oracle_sid=orcl2、man target /   rman target / log d:\files\dump.txt3、热备份:shutdown immediate;  startup mount;  alt......