2011-06-09 123 views
3

我已經做了很多關於我認爲是一個簡單問題的研究,但是我找不到我在找什麼。我只是試圖將記錄作爲匹配返回,只匹配與記錄中文本部分匹配的搜索項。如何根據記錄的部分匹配返回記錄?

例如,如果用戶搜索「ed」,我希望返回包含「ed」的任何記錄。因此,如果在名稱列中有名爲「Edward」的記錄,它將作爲匹配返回。如果說明中有「已完成」的記錄,它也會將該記錄作爲匹配返回。

我已經看過全文搜索,但不確定這是否是我需要做的事情,或者它是否會做我所需要的。

一如往常,我不是在尋找每個人的回答,我只是在尋找一個方向。

回答

9

以前從未使用過SQLite,但它是否具有「LIKE」運算符?

在MySQL中,你可以這樣做:

SELECT name FROM list WHERE name LIKE '%ed%'; 
+0

是...看起來像它支持的功能: http://www.sqlite.org/lang_corefunc.html#like – 2011-06-09 22:47:01

+0

然後你做錯了。 – Pedantic 2011-06-10 02:17:13

+1

@Droid,確保你在約束字符串的兩邊都使用'%'。 – 2011-06-10 02:27:28

1

下面是一些代碼,會做你想要什麼,如果你要查詢的內容提供者。如果你直接查詢一個sqlite數據庫對象,這些參數是相似的,但不同。

String search = "ed"; 

// surround it with the SQL wildcard '%' 
String q = "%" + search + "%" 

Cursor c = getContentResolver().query(uri, 
    new String[] { column1, column2 }, 
    "column_name like ?", 
    new String[] { q }, 
    null); 

的片段將搜索內容提供商在uricolumn_name字符串編輯。

+0

現在完美運作。謝謝史蒂夫! – Droid 2011-06-10 23:49:04

+0

非常感謝史蒂夫,它適合我... – Christian 2016-03-22 09:35:43

相關問題