3

我在 Android 上的 SQLite 表中有以下项目(表选项卡有 1 列 - '名称' 文本)

Beta
Work
Úpal
User

如果我在 SQL Server 中有这些项目以及斯洛伐克语的排序规则select * from tab order by name,它会正确输出排序为的项目:

Beta
User
Úpal
Work

在斯洛伐克语中,带有重音符号的 U - Ú 应排在 U 之后。

在 Android 上的 SQLite 中,它按以下顺序输出它们:

Beta
User
Work
Úpal

我了解发生了什么,SQLite 可能正在使用字符代码比较字符,而 Ú 在 W 之后。

我该怎么做才能让它按我的方式排序?甚至可能吗? COLLATION 上的 SQLite 文档指出,基本上所有排序规则都是二进制比较的变体,并且使用 memcmp() 比较字符串数据,而不管文本编码如何。

4

1 回答 1

1

SQLite 的 C API 允许安装新的排序规则。Android API 没有公开这些函数,但至少它安装了两个额外的排序规则:

除了 SQLite 的默认排序器之外BINARY,Android 还提供了两个LOCALIZED,它们随系统的当前语言环境而变化,以及UNICODEUnicode 排序算法,不针对当前语言环境量身定制。

于 2013-01-22T21:58:37.437 回答