下面的文章介绍了通过NLSSORT函数来限制Oracle对简体中文的排序规则。本文将展示通过调整session级别的参数NLS_SORT来达到同样的目的。
《【NLSSORT】改变Oralce对简体汉字的排序规则(拼音、部首、笔画)》
http://space.itpub.net/519536/viewspace-627797
1.实验表T的数据内容概览
sec@secooler> select * from t;
X
------------------------------
侯
你
做
拉
推
拆
6 rows selected.
2.按照拼音进行排序
sec@secooler> alter session set nls_sort='SCHINESE_PINYIN_M';
Session altered.
sec@secooler> select * from t order by x;
X
------------------------------
拆
侯
拉
你
推
做
6 rows selected.
3.按照“部首”(顺序)和“笔画数”(第二顺序)进行排序
sec@secooler> alter session set nls_sort='SCHINESE_RADICAL_M';
Session altered.
sec@secooler> select * from t order by x;
X
------------------------------
你
侯
做
拆
拉
推
6 rows selected.
单人旁的汉字在前,提手旁汉字在后;单人旁的三个汉字进一步又是按照笔画数多少进行的排序。
4.按照“笔画数”(顺序)和“部首”(第二顺序)进行排序
sec@secooler> alter session set nls_sort='SCHINESE_STROKE_M';
Session altered.
sec@secooler> select * from t order by x;
X
------------------------------
你
拆
拉
侯
做
推
6 rows selected.
排在越后的汉字的笔画数越多。
5.小结
条条大路通罗马,无论是用NLSSORT函数还是在session级别调整NLS_SORT参数,更或者是直接调整客户端的NLS_SORT环境变量,都可以达到我们的特殊需求。
每一种调整方法都有着自身的优势和劣势,有着各自的使用场合,具体问题需要具体分析。
Good luck.
secooler
10.02.25
-- The End --
【ORDER】改变Oralce对简体汉字的排序规则(拼音、部首、笔画)(session级调整)
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)