zktww

近期发现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\');

结束

分类:

技术点:

相关文章:

  • 2021-12-14
  • 2021-10-18
  • 2021-12-17
  • 2021-11-21
  • 2021-12-11
  • 2021-07-23
猜你喜欢
  • 2021-09-26
  • 2021-10-31
  • 2021-10-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
相关资源
相似解决方案