在SQLite数据库中搜索文本 - Android

时间:2014-03-18 05:51:19

标签: android sqlite

我有一个包含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数据库中实现文本搜索。

1 个答案:

答案 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%中包含,然后你的子字符串将从整个字符串中匹配。