我正在用editext输入在sqlite数据库中搜索。在sqlite中,我有一句话。我想从sqlite中找到句子,其中包含一些以我的输入文本开头的单词。例如,如果我的输入文本为:“伤害”,我想查找包含“伤害”之类的词的句子。输入搜索为“有效”时,我不想找到“有害”字词。因为这个词不是我词的开头(有害)。希望能达到我的目的。这是我的示例代码:
String pattern = "'%" + inputSearch.getText().toString() + "%'";
final String sql = "SELECT * FROM " + TABLE + " WHERE " + TITLE + " LIKE " + pattern;
final SQLiteDatabase mydb = new MyDatabase(ArdicActivity.this).getWritableDatabase();
// final Cursor c = mydb.rawQuery(sql, null);
我想在句子之间找到单词。例如,我想从句子中找到“有害”一词:“这种食物对您有害”
答案 0 :(得分:0)
只需删除初始通配符:
String pattern = "'" + inputSearch.getText().toString() + "%'";
Reference - SQLite LIKE condition
此外,我建议您使用SQLiteOpenHelper
类中提供的方法,而不要使用串联的字符串进行查询。参见this answer
答案 1 :(得分:0)
如果在模式中添加一个前导空格是否行得通?
String pattern = "'% " + inputSearch.getText().toString() + "%'";
请注意第一个百分号后的空格。这将找到输入在句子中间的句子。然后您可以添加其他条件,其中模式是
String pattern = inputSearch.getText().toString() + "%'";
查找以输入开头的句子。