0

我正在使用 FTS3 从数据库中获取内容,我需要获取带有前缀的字符串(内容仅以该字符串开头)。但是当我使用 MATCH 时,它的行为就像包含。

这里的例子:

现在:输入: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);
4

2 回答 2

3

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

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

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 + "%"});

现在它将起作用。

于 2013-02-22T09:35:08.940 回答
0

使用 LIKE with % 而不是 Match with *

于 2013-02-22T09:35:06.453 回答