Oracle的orderby的中文排序问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle的orderby的中⽂排序问题
Oracle 中查询结果按照某个中⽂字段或者英⽂字母(包括符号)排序,并不会得到我们预期的结果,因为对于中⽂与英⽂字母及符号,Oracle 实际是按照其对应的ASCII码值排序的!
可以看到按照中⽂村名排序并没有按照我们预期,按照村名的拼⾳字段排序,也是⼀样(实际是按照其对应的ASCII码值排序)!
当然,Oracle也提供了按照中⽂拼⾳排序,按照部⾸或笔画排序,⽅式如下:
按照拼⾳顺序:
ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_PINYIN_M')
按照部⾸顺序:
ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_RADICAL_M')
按照笔画顺序:
ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_STROKE_M')
不过,对于多⾳字的排序还是有问题的。

所以我们最后的解决⽅案是,存储村名的拼⾳(多⾳字由⼈⼯识别),再按照拼⾳排序;其实也可以增加⼀个“排序值”的字段,按照1、2、3...排序。

===============================================================================================================(不过,在 Linq to List中,按照中⽂排序是按照拼⾳来排序的,但同样对多⾳字的识别仍然有问题。

)。

相关文档
最新文档