欢迎进入Wiki » FAQ » 我们的Oracle数据库的默认字符集是UTF-8,如何按中文排序呢?

我们的Oracle数据库的默认字符集是UTF-8,如何按中文排序呢?

在2013-12-23 18:07上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

Oracle数据库字符集为UTF-8时,默认的order by查出来的数据顺序不是按中文拼音来的,具体原因可以Google一下“oracle 字符集 排序”。

按照网络上的各种解决方案,如果需要按照中文排序,无非就是设置 NLS_SORT 参数,不论是session级别的、还是sql语句级别的、或者操作系统级别的。

Grails中的默认ORM框架是hibernate,因此可以进一步Google在Hibernate中的解决方案,以及Grails + Hibernate的解决方案,比如这篇帖子

在Grails工程中安装了BroToolkit插件后,只需要在 DataSource 中配置一个定制的 HibernateConfiguration,就可以实现中文排序。

hibernate {
    properties {
        oracle.nls_sort = "SCHINESE_PINYIN_M"    // 按中文拼音排序
   }
}

dataSource {
    configClass = bropen.toolkit.orm.HibernateConfiguration
   ......
}

该配置同样可以支持通过外部properties文件加载,并可以支持多数据源,详细可参考安装后的 DataSource.groovy 和 DataSource.properties 模板文件。

此外,这个Hibernate配置类还可以支持设置Oracle数据库表空间、设置数据库连接池自增等。

在2013-10-31 10:59上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号