我有一个包含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数据库中实现文本搜索.
请试试
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%
然后您的子字符串将从整个字符串中匹配.