当前位置:  开发笔记 > 编程语言 > 正文

如何使用指定的语言环境对sqlite3中的文本进行排序?

如何解决《如何使用指定的语言环境对sqlite3中的文本进行排序?》经验,为你挑选了2个好方法。

默认情况下,Sqlite3仅按ascii字母排序.我试图查看谷歌,但我发现的唯一的事情是有关整理的信息.SQLITE3只NOCASE,RTRIMBIARY归类.如何添加对特定区域设置的支持?(我在Rails应用程序中使用它)



1> klew..:

我接受了Doug Currie的回答,但我想添加一些"算法"怎么做,因为sqlite3文档非常奇怪(至少对我而言).

好的,我们现在正在使用sqlite3:

    下载sqlite的ICU扩展

    编译它:

    gcc -shared icu.c `icu-config --ldflags` -o libSqliteIcu.so
    

    它适用于Linux.我还需要安装额外的ICU开发包:

    sudo apt-get install libicu-dev
    

    我正在研究64位架构,我得到错误__relocation R_X86_64_32S__(无论它意味着什么:).GCC建议添加-fPIC编译选项,这有助于.

    运行sqlite3.我们可以用命令加载扩展:

    .load './libSqliteIcu.so'
    

    假设它在当前目录中,我们也可以指定整个路径.

    创建新的排序规则:

    SELECT icu_load_collation('pl_PL', 'POLISH');
    

    第一个参数是所需的区域设置,第二个参数是它(它可以是任何东西).

    现在我们可以使用新的语言环境对数据进行排序:

    SELECT * FROM some_table ORDER BY name COLLATE POLISH;
    

    它不区分大小写!



2> Doug Currie..:

SQLite 支持与ICU集成.根据自述文件, sqlite/ext/icu/README.txtsqlite/ext/icu/目录包含SQLite"ICU"扩展的源代码,它是"International Components for Unicode"库与SQLite的集成.

1. Features

    1.1  SQL Scalars upper() and lower()
    1.2  Unicode Aware LIKE Operator
    1.3  ICU Collation Sequences
    1.4  SQL REGEXP Operator

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有