Android的SQLite查询来匹配包含文本的列

试图做一个查询,如果给定的列包含任何内部的文本将返回匹配。 例如,如果我要传递“真正”这个词,那么包含文本“这是一个很长的文本行”的列将会匹配。 到目前为止我的查询只返回,如果它完全匹配,所以它只会匹配一个包含“真正”的列,就是这样。

我已经尝试了一些方法,但都似乎返回相同的结果:

第一种方法(s是我传入的string):

Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE '%" + s + "%' COLLATE NOCASE", null, null, null, null); 

下一步

 String p_query = "SELECT COUNT(*) FROM data WHERE number=? COLLATE NOCASE"; 

  • 具有索引的Android SQLite性能
  • 在Android SQLite中获取数据库错误信息的位置(例如,由于违反非null而导致插入失败)
  • 查询SQLite For Android中列的最大值
  • SQLiteOpenHelper与ContentProvider
  • DDMS文件浏览器无法访问数据\数据(HTC Desire HD)
  • Android / SQLite:插入 - 更新表列以保持标识符
  • 从SQLite数据库Android填充微调器
  • 在SQLite表中使用文本作为主键不好?
  • 试图做一个查询,如果给定的列包含任何内部的文本将返回一个匹配。

    这适用于我,它的参数化:

     Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE ?", new String[] {"%" + s + "%"}, null, null, null); 

    “真的”是一个明显的词,但如果你正在寻找像“冰”,不想“骰子”,“副”,“冰淇淋”等,你将不得不使用不同的模式,如: "% " + s + " %"s + " %"

    或者使用带有标记器的FTS表,如Porter Stemming。