zoukankan      html  css  js  c++  java
  • Oracle的order by的中文排序问题

    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中,按照中文排序是按照拼音来排序的,但同样对 多音字 的识别仍然有问题。)

  • 相关阅读:
    爬虫之移动端数据爬取
    Python网络爬虫之图片懒加载技术、selenium和PhantomJS
    iOS-类方法
    iOS-二进制,十进制,十六进制的相互转换
    iOS-category
    iOS-.h和.m文件
    iOS-关于@property和@synthesize
    自定义控件-使用frame和代码的自定义UI控件
    跨平台开发
    GitHub探索
  • 原文地址:https://www.cnblogs.com/XWCloud/p/7859769.html
Copyright © 2011-2022 走看看