我在Android应用程序中使用解析数据库,我想查询数据库表“ candidateDetails”以返回其中“技能”列包含“关键字”的所有ParseObjects。
我能够获取ParseObject,但是我也想在此查询中添加ignore-case子句,即,无论关键字是否大小写,它都应返回技能包含关键字的所有ParseObjects。
public List<ParseObject> getCandidates(String keyword) {
List<ParseObject> result=new ArrayList<ParseObject>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("candidateDetails");
query.whereContains("skills", keyword);
try {
result=query.find();
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
您可以通过两种方式做到这一点。首先,ParseQuery类包含or()
将查询列表作为参数的方法。因此,您可以按原样创建一个查询源字符串,为小写创建另一个查询,为大写创建最后一个查询。像这样:
public List<ParseObject> getCandidates(String keyword) {
List<ParseObject> result=new ArrayList<ParseObject>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("candidateDetails");
query.whereContains("skills", keyword);
ParseQuery<ParseObject> queryLower = ParseQuery.getQuery("candidateDetails");
queryLower.whereContains("skills", keyword.toLowerCase());
ParseQuery<ParseObject> queryUpper = ParseQuery.getQuery("candidateDetails");
queryUpper.whereContains("skills", keyword.toUpperCase());
ParseQuery<ParseObject> queryCombined = ParseQuery.or(Arrays.asList(query, queryLower, queryUpper));
try {
result=queryCombined.find();
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
你也可以使用方法whereMatches(String key, String regex, String modifiers)
和可能的修饰符之一是i
其中的手段ignore case
。因此,您可以按以下方式修改查询:
public List<ParseObject> getCandidates(String keyword) {
List<ParseObject> result=new ArrayList<ParseObject>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("candidateDetails");
String pattern = "^.*" + keyword + ".*$";
query.whereMatches("skills", keyword, "i");
try {
result=query.find();
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句