带有重音字符的SQLite排序列

时间:2017-04-05 10:11:45

标签: sqlite

我使用PHP使用 SQLite 数据库开发网站。我正在运行 Windows (dev),我的生产环境应该是 * nix平台。这是我的表的架构:

CREATE TABLE [animals](
    [id] INTEGER NOT NULL UNIQUE, 
    [name] VARCHAR(50) NOT NULL
);

我想animals (包含重音字符)对name进行排序。我的SQL查询是:

SELECT * FROM animals ORDER BY name DESC

我得到了:

éléphant
tigre
renard
chien

代替,

tigre
renard
éléphant
chien

我在网上搜索过。我试过了,

SELECT * FROM animals ORDER BY name COLLATE *binary|nocase|rtrim* DESC

但我有同样的问题。我也试过了,

SELECT * FROM animals ORDER BY name COLLATE *localized|unicode* DESC

但是我收到错误(我的SQLite客户端崩溃,要么PHP返回以下错误:no such collation sequence: UNICODE)。

似乎有适用于Android的解决方案,但我正在运行Windows,而我的生产环境应该是* nix平台。

我怎样才能让我的动物以正确的方式分类?

1 个答案:

答案 0 :(得分:1)

默认情况下,SQLite只有ASCII排序规则。

可以使用ICU扩展来获得Unicode支持,但是PHP没有启用它。

但你可以create your own collation并在PHP中实现比较。