【发布时间】:2014-03-18 14:51:24
【问题描述】:
我有一个有 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 数据库中实现文本搜索。
【问题讨论】:
-
这是因为您在 search_text only 之后放置了 '%',这意味着只查找以 search_text 开头的记录,而不必理会它后面的内容。您需要在它之前放置“%”以获得完美的过滤器,如下面@Rashmi 的答案所示。
-
感谢您的帮助。干杯。