Oracle中文排序 NLSSORT
生活随笔
收集整理的這篇文章主要介紹了
Oracle中文排序 NLSSORT
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天發(fā)現(xiàn)了個挺有意思的函數(shù):NLSSORT,發(fā)現(xiàn)能給中文按拼音、筆畫、部首排序,遂查了下相關(guān)資料,結(jié)果如下:
Oracle 9i開始,新增了按照拼音、部首、筆畫排序功能。
????通過設(shè)置NSL_SORT值來實現(xiàn):
????SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序
????SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序
????SCHINESE_PINYIN_M 按照拼音排序
實現(xiàn)中文排序有兩種常見方式:
session級
ALTER SESSION SET NLS_SORT='XXX';
此結(jié)果影響整個session。
sql級
SELECT * FROM TABLE_XXX ORDER BY NLSSORT(字段名, 'NLS_SORT=XXX');
例:
CREATE?TABLE?test_sort(NAME?VARCHAR2(50));INSERT?INTO?test_sort(NAME)?VALUES('中國'); INSERT?INTO?test_sort(NAME)?VALUES('山西'); INSERT?INTO?test_sort(NAME)?VALUES('北京'); INSERT?INTO?test_sort(NAME)?VALUES('陜西'); INSERT?INTO?test_sort(NAME)?VALUES('河北'); INSERT?INTO?test_sort(NAME)?VALUES('湖北'); INSERT?INTO?test_sort(NAME)?VALUES('河南');默認排序結(jié)果: 默認排序以BINARY排序,即二進制排序
SQL>?SELECT?*?FROM?test_sort?ORDER?BY?NAME;NAME -------------------------------------------------- 中國 北京 山西 河北 河南 湖北 陜西 7?rows?selected拼音排序結(jié)果:
SQL>?SELECT?*?FROM?test_sort?ORDER?BY?NLSSORT(NAME,?'NLS_SORT=SCHINESE_PINYIN_M');NAME -------------------------------------------------- 北京 河北 河南 湖北 山西 陜西 中國 7?rows?selected筆畫排序結(jié)果:
SQL>?SELECT?*?FROM?test_sort?ORDER?BY?NLSSORT(NAME,?'NLS_SORT=SCHINESE_STROKE_M');NAME -------------------------------------------------- 山西 中國 北京 河北 河南 陜西 湖北 7?rows?selected部首排序結(jié)果:
SQL>?SELECT?*?FROM?test_sort?ORDER?BY?NLSSORT(NAME,?'NLS_SORT=SCHINESE_RADICAL_M');NAME -------------------------------------------------- 中國 北京 山西 河北 河南 湖北 陜西 7?rows?selected轉(zhuǎn)載于:https://blog.51cto.com/baser/2139625
總結(jié)
以上是生活随笔為你收集整理的Oracle中文排序 NLSSORT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年美容师(初级)多少钱及美容师(
- 下一篇: apple 西单大悦城维修_如何检查Ap