SQLite使用Match搜索前缀String

时间:2013-02-22 09:23:33

标签: android sqlite full-text-search android-sqlite

我正在使用FTS3,从DB获取内容,我需要获得带前缀的字符串(内容仅以该字符串开头)。但是当我使用MATCH时,它就像Contains一样。

这里的例子:

现在: 输入:123 输出:123abc         123aaa         AAA123

我想要的: 输入:123 输出:123abc         123aaa

这是我的代码:

db.rawQuery("SELECT * FROM " + SQLConstants.TABLE_NAME + " WHERE " + SQLConstants.TABLE_NAME + " MATCH '" + input + "*' ORDER BY " + CODE
        + " ASC;", null);

2 个答案:

答案 0 :(得分:4)

对于像你这样的目标,通常使用LIKE子句。

  

在WHERE子句中使用LIKE运算符来搜索指定的   列中的模式。

String value = "something";

说明:

like value + "%"; --> return everything that starts with value and behind it can be anything
like % + value; --> return everything that ends with value and before it can be anything
% + like value + "%"; --> return everything that contains value and before and behind it can be anything

在你的情况下,你需要第一个案例:

db.rawQuery("SELECT * FROM " + SQLConstants.TABLE_NAME 
         + " WHERE " + SQLConstants.COLUMN_NAME + " like ?
             ORDER BY " + CODE + " ASC", new String[] {input + "%"});

现在它会起作用。

答案 1 :(得分:0)

使用LIKE与%而不是与*匹配