问题

近期发现oracleorder by中文排序并不是完全按照拼音排序的

经过测试发现oracleorder 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')

结束

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐