Android sqlite查询匹配包含文本的列

Pau*_*aul 10 java sqlite android

如果给定列包含内部任何位置的文本,则尝试创建将返回匹配的查询.例如,如果我要传递"真的"这个词,那么包含文本"这是一个非常长的文本行"的列将匹配.到目前为止,我的查询仅在完全匹配时返回,因此它只匹配包含"真实"的列,即它.

我尝试了几种方法,但两者似乎都返回了相同的结果:

第一种方式(s是我传入的字符串):

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

下一步

String p_query = "SELECT COUNT(*) FROM data WHERE number=? COLLATE NOCASE";
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 30

如果给定列包含内部任何位置的文本,则尝试创建将返回匹配的查询.

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

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

"真的"是一个独特的足够的词,但如果你正在寻找的东西,如"冰",不想"骰子","副","冰淇淋",等你将不得不使用不同的模式,如:"% " + s + " %"s + " %".

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