我有一个sqlite数据库,我需要按一个列来排序,这个列有一些以重音字符开头的单词.这些物品订购错误,它们出现在结果的最后:
Antonio BonzoZetoÁngela
当sqlite数据库在该列中有重音时,如何正确订购?
谢谢
laa*_*lto 21
或
... ORDER BY column COLLATE UNICODE
Run Code Online (Sandbox Code Playgroud)
要么
... ORDER BY column COLLATE LOCALIZED
Run Code Online (Sandbox Code Playgroud)
除了SQLite的默认
BINARYcollator之外,Android还提供了两个LOCALIZED,它随系统的当前语言环境而变化,并且UNICODE是Unicode排序算法,而不是根据当前语言环境定制的.
例:
db.execSQL("CREATE TABLE foo(a TEXT);");
db.execSQL("INSERT INTO foo VALUES('Antonio'),('Bonzo'),('Zeto'),('Ángela');");
Cursor c = db.rawQuery("SELECT * FROM foo ORDER BY a COLLATE UNICODE", null);
while (c.moveToNext()) {
Log.d("foo", c.getString(0));
}
Run Code Online (Sandbox Code Playgroud)
输出:
Ángela
Antonio
Bonzo
Zeto
Run Code Online (Sandbox Code Playgroud)