我正在使用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);
答案 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与%而不是与*匹配