默认情况下,Sqlite3仅按ascii字母排序.我试图查看谷歌,但我发现的唯一的事情是有关整理的信息.SQLITE3只NOCASE
,RTRIM
和BIARY
归类.如何添加对特定区域设置的支持?(我在Rails应用程序中使用它)
我接受了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;
它不区分大小写!
SQLite 支持与ICU集成.根据自述文件,
sqlite/ext/icu/README.txt
该sqlite/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