Android排序sqlite查询结果忽略大小写
Posted
技术标签:
【中文标题】Android排序sqlite查询结果忽略大小写【英文标题】:Android sort sqlite query results ignoring case 【发布时间】:2011-06-22 11:58:07 【问题描述】:只是想知道是否有一种方法可以对忽略大小写的查询结果进行排序。因为此时以大写字母开头的字段被排序并放在列表顶部,以小写字母开头的字段也被排序但放在大写字段之后。
谢谢—— 迈克
【问题讨论】:
【参考方案1】:ORDER BY column COLLATE NOCASE;
见http://www.sqlite.org/datatype3.html#collation
【讨论】:
我尝试这样做并收到错误SQLiteException: near "COLLATE": syntax error: , while compiling: SELECT * FROM table ORDER BY column ASC COLLATE NOCASE
。解决方法是去掉ASC
,只有在DESC
时才指定方向。
@unchek — 也可以试试COLLATE NOCASE ASC
。
@plowman 就像 aaz 说的,ASC 或 DESC 应该在 NOCASE 之后。【参考方案2】:
在 android 上,您会得到一个名为 LOCALIZED 的排序函数。
指定列时,请执行以下操作:
CREATE TABLE song(..., title TEXT COLLATE LOCALIZED ASC, ...)
效果很好。如果您有 Android 源代码,只需搜索“COLLATE”即可查看各种示例。
【讨论】:
【参考方案3】:将所有条目转换为小写例如:select name from table order by LCASE(name)
LCASE 或 LOWER(检查文档)
【讨论】:
为回复伙伴干杯...不过,另一种方法更容易:)以上是关于Android排序sqlite查询结果忽略大小写的主要内容,如果未能解决你的问题,请参考以下文章
SQLite Random() 在 ORDER BY 中没有正确排序