【转】 【ORDER】改变Oralce对简体汉字的排序规则(拼音、部首、笔画)(session级调整)

【ORDER】改变Oralce对简体汉字的排序规则(拼音、部首、笔画)(session级调整)

 

http://space.itpub.net/519536/viewspace-627883

 

下面的文章介绍了通过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 --

你可能感兴趣的:(oracle,session)