我正在尝试在我的表的2列中搜索字符串。如果字符串在两列中的任何一列中,我希望返回该行。
在查询中,search_text是要搜索的字符串,KEY_TITLE和KEY_BODY是要搜索的两列。
这将搜索KEY_BODY:
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
KEY_DATE}, KEY_BODY + " LIKE '"+search_text+"%'" , null, null, null,KEY_DATE_INT + " DESC");
这会搜索KEY_TITLE:
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
KEY_DATE}, KEY_TITLE + " LIKE '"+search_text+"%'" , null, null, null,KEY_DATE_INT + " DESC");
我需要结合2个结果。我想出了这个:
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
KEY_DATE},
KEY_BODY + " LIKE '"+search_text+"%'"+ "||"
+ KEY_TITLE + " LIKE '"+search_text+"%'"
, null, null, null,KEY_DATE_INT + " DESC");
这不会返回任何内容。任何人都可以告诉我我的查询错误吗?
干杯。
答案 0 :(得分:2)
在SQL中,||
是字符串连接运算符,而不是逻辑 - 或。令人惊讶的是,逻辑运算符是OR
:
KEY_BODY + " LIKE '"+search_text+"%' OR "
+ KEY_TITLE + " LIKE '"+search_text+"%'"
答案 1 :(得分:1)
您需要使用OR代替||
'“+ search_text +”%'“表示textANDSOMETHING
我猜你想要SOMETHINGtextANDSOMETHING。
使用:'%“+ search_text +”%'“