SQlite查询以搜索2列中的字符串

时间:2014-01-04 13:41:42

标签: android sqlite

我正在尝试在我的表的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");

这不会返回任何内容。任何人都可以告诉我我的查询错误吗?

干杯。

2 个答案:

答案 0 :(得分:2)

在SQL中,||是字符串连接运算符,而不是逻辑 - 或。令人惊讶的是,逻辑运算符是OR

KEY_BODY + " LIKE '"+search_text+"%' OR "
+ KEY_TITLE + " LIKE '"+search_text+"%'"

答案 1 :(得分:1)

您需要使用OR代替||

'“+ search_text +”%'“表示textANDSOMETHING

我猜你想要SOMETHINGtextANDSOMETHING。

使用:'%“+ search_text +”%'“