1、汉字排序问题
android中一般排序按照时间的升降,但有时候需求要求按照字符串排序,刚开始想获取首字母排序,感觉比较麻烦,后来找到android的sqlite中有这样的原生功能
android中默认汉字(字符串)排序规则按照unicode排序
因此如果字段是汉语的话要用以下方式进行排序
orber by 字段 COLLATE LOCALIZED ASC
collate用于字符串表达式排序规则转换
以下是sql中的语法
COLLATE < collation_name >
< collation_name > ::=
{ Windows_collation_name } | { SQL_collation_name }
参数
collation_name
是应用于表达式、列定义或数据库定义的排序规则的名称。collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name。
Windows_collation_name
是 Windows 排序规则的排序规则名称。请参见 Windows 排序规则名称。
SQL_collation_name
是 SQL 排序规则的排序规则名称。请参见 SQL 排序规则名称。
COLLATE 子句只能应用于 char、varchar、text、nchar、nvarchar 和 ntext 数据类型。
2、多条件排序问题
多条件排序以逗号分割
select * from time order by createtime desc,exetime asc;
3、多条件查询问题
有时候我们需要多条件查询,但条件的个数不确定,可以用下面的方式拼接sql语句
String selection = "1 = 1";
//第一个条件
if (area.length()>0) {
selection += " and " + DevicePlan.DevicePlanMetaData.COLUMN_NAME_ASSISTSNAME + " like " + "'%" + area + "%'";
}
//第二个条件
if (project.length()>0 ) {
selection += " and " + DevicePlan.DevicePlanMetaData.COLUMN_NAME_SYSTEMNAME + " like " + "'%" + project + "%'";
}
//第三个条件
if (name.length()>0) {
selection += " and " + DevicePlan.DevicePlanMetaData.COLUMN_NAME_PLANNAME + " like " + "'%" + name + "%'";
}
//第四个条件
if (number.length()>0) {
selection += " and " + DevicePlan.DevicePlanMetaData.COLUMN_NAME_PLANNUM + " like " + "'%" + number + "%'";
}
Cursor c = getActivity().getContentResolver().query(DevicePlan.DevicePlanMetaData.CONTENT_URI,
null,//String[] projection
selection,//String selection
null,//String[] selectionArgs
DevicePlan.DevicePlanMetaData.DEFAULT_SORT_ORDER);//String sortOrder
4、合并cursor–MergeCursor
有时候可能需要从多个表中查询出数据,最终放到一个cursor中(或者list)这样就需要MergeCursor
在Android中, MergeCursor类用于合并两个结果集,与CursorJoin类水平合并(增加列)不同的是,MergeCursor是两个结果集的垂直合并,即将第二个结果集的每一行增加到第一个结果集行的后面。
主要用法:
Cursor[] cursors = new Cursor[2];
cursors[0] = getContentResolver().query(……);
cursors[1] = getContentResolver().query(……);
Cursor merCur = new MergeCursor(cursors);