我有一个包含6列的数据库,其中2列是文本格式。当用户输入字符串时,我想在2个文本列中搜索字符串并返回行。这是我提出的代码:
mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_DATE},
KEY_BODY + " LIKE '"+search_text+"%' OR "
+ KEY_TITLE + " LIKE '"+search_text+"%'" ,
null, null, null,KEY_DATE_INT + " DESC");
我有理由相信这会转化为
Select KEY_ROWID, KEY_TITLE, KEY_DATE from DATABASE_TABLE where {(KEY_BODY LIKE 'search_text') OR (KEY_BODY LIKE 'search_text')}
我遇到的问题是,它只搜索列的第一个单词。例如,如果列中的文本是“This is a test”并且搜索字符串是“test”,则查询将不返回该行。如果搜索文本是“this”,它将返回该行。
我做错了什么,是否有更好的方法在Android中的SQLite数据库中实现文本搜索。
答案 0 :(得分:7)
请尝试
mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_DATE},
KEY_BODY + " LIKE '%"+search_text+"%' OR "
+ KEY_TITLE + " LIKE '%"+search_text+"%'" ,
null, null, null,KEY_DATE_INT + " DESC");
这个想法是,如果你想要搜索你的子字符串,那么你需要在%substring%
中包含,然后你的子字符串将从整个字符串中匹配。