10

如果给定列包含内部任何地方的文本,则尝试进行将返回匹配项的查询。例如,如果我要传递单词“really”,则包含文本“This is a very long line of text”的列将匹配。到目前为止,我的查询只有在完全匹配时才会返回,所以它只会匹配包含“really”的列,就是这样。

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

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

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

1 回答 1

33

如果给定列包含内部任何地方的文本,则尝试进行将返回匹配项的查询。

这对我有用,它是参数化的:

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

“真的”是一个足够独特的词,但如果您正在搜索“冰”之类的内容并且不想要“骰子”、“副”、“冰淇淋”等,则必须使用不同的模式,例如:"% " + s + " %"s + " %"

或者使用带有分器的 FTS 表,例如 Porter Stemming。

于 2013-04-15T18:46:05.283 回答