2013-02-22 133 views
0

我使用FTS3,以获得从数据库的内容,我需要用前缀字符串得到(内容只与字符串开始)。但是当我使用MATCH时,它就像Contains一样。SQLilte前缀字符串搜索使用匹配

这里例如:

NOW: 输入:123 OUTPUT:123ABC 123aaa AAA123

我想: 输入:123 OUTPUT:123ABC 123aaa

这里我的代码:

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

为我工作。你的数据是否真的包含“123aaa”?没有其他人物吗? – 2013-02-22 10:16:32

回答

4

对于像您这样的目标通常使用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 + "%"}); 

现在它将会作品。

+0

什么是CODE应该是在这个字符串? – 2014-02-16 20:47:57

0

使用LIKE与%代替匹配*