2011-06-09 98 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

相关问题