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"; 

Solutions Collecting From Web of "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。