2013-04-15 3 views
8

指定された列にテキストが含まれている場合は一致を返すクエリを作成しようとしています。たとえば、「本当に」という単語を渡す場合、「これは本当に長いテキスト行です」というテキストを含む列が一致します。これまでのところ、私のクエリは正確に一致する場合にのみ返され、 "本当に"含まれている列と一致するだけです。テキストを含む列と一致するAndroid sqliteクエリ

私はカップルの方法を試してみたが、両方とも同じ結果を返すように見える:

最初の方法を(Sは私が渡している文字列です):

Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE '%" + s + "%' COLLATE NOCASE", null, null, null, null); 

次の方法

String p_query = "SELECT COUNT(*) FROM data WHERE number=? COLLATE NOCASE"; 
+0

私の知る限り、あなたはカーソルオブジェクトで何をしますか?あなたはそれに関連するデータをどのように扱いますか?私は不自然な質問かもしれませんが、私はSqlite/Databaseにはほとんど3日掛かりません。 – Ravi

答えて

26

指定された列にテキストが含まれている場合、一致するものを返すクエリを作成しようとしています。

これは私のために動作し、それは、パラメータだ: "

Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, 
     KEY_TITLE + " LIKE ?", new String[] {"%" + s + "%"}, 
     null, null, null); 

は「本当に」明確な十分な言葉ですが、「氷」のようなものを探しているとしたくない場合はダイス "、"バイス "、"アイスクリーム "などのような異なるパターンを使用する必要があります:"% " + s + " %"s + " %"

また、Porter StemmingのようにtokenizerのFTSテーブルを使用してください。

+0

ありがとうございます – Paul

+0

うわー。あなたは私を救いました。ありがとう – Libin

関連する問題