oracle的order by 中文排序原理


近期發現oracle的order by中文排序並不是完全按照拼音排序的

經過測試發現oracle的order by中文排序是按照中文的ASCII碼排序的

查詢字符ASCII碼

select ascii('') from dual;

這里說一下oracle中的漢字分類:

一級漢字,是最常用的漢字,按漢語拼音字母順序排列,共3755個;
二級漢字,屬於次常用漢字,按偏旁部首的筆划順序排列,共3008個

所以可能存在一些二級漢字的首字母是一級漢字的首字母之前的,會排序在一級漢字之后

正確排序方式:

1.按照拼音順序
ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_PINYIN_M');

2.按照部首順序
ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_RADICAL_M');

3.按照筆畫順序
ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_STROKE_M');

結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM