0

DBからコンテンツを取得するためにFTS3を使用していますが、プレフィックス付きの文字列を取得する必要があります(コンテンツはその文字列でのみ始まります)。しかし、MATCHを使用すると、Containsのように動作します。

ここに例:

NOW:入力: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

Match with *の代わりにLIKEwith%を使用します

于 2013-02-22T09:35:06.453 に答える