【问题标题】:How can I return a record based on only a partial match of that record?如何仅根据该记录的部分匹配返回记录?
【发布时间】:2011-09-12 02:36:45
【问题描述】:

我已经对我认为很简单的问题进行了大量研究,但我找不到我要找的东西。我只是试图返回一条记录作为匹配项,其中只有一个搜索词与记录中的部分文本匹配。

例如,如果用户搜索“ed”,我希望返回任何包含“ed”的记录。因此,如果名称列中有名称为“Edward”的记录,它将作为匹配项返回。如果描述中有一条带有“finished”的记录,它也会将该记录作为匹配返回。

我已经研究了全文搜索,但不确定这是否是我需要做的事情,或者它是否会做我需要的事情。

和往常一样,我不是在寻找每个人的答案,我只是在寻找一个方向。

【问题讨论】:

    标签: android sqlite search


    【解决方案1】:

    以前从未使用过 SQLite,但它有“LIKE”运算符吗?

    在 MySQL 中,您可以执行以下操作:

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

    【讨论】:

    • 是的......看起来它作为一个函数被支持:sqlite.org/lang_corefunc.html#like
    • @Droid,确保您在约束字符串的两侧都使用了%
    • 史蒂夫——这正是问题所在。谢谢 :) -- 克里斯 - 你指出显而易见的事情的天赋是不真实的。
    【解决方案2】:

    如果您正在查询内容提供者,这里有一些代码可以满足您的需求。如果是直接查询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);
    

    sn-p 将在uri 的内容提供者中搜索column_name 中的字符串。

    【讨论】:

    • 现在完美运行。谢谢史蒂夫!
    猜你喜欢
    • 2010-09-18
    • 2020-06-18
    • 2021-07-06
    • 2018-11-17
    • 2022-12-03
    • 2018-11-15
    • 2021-08-27
    • 2023-02-22
    • 2023-04-04
    相关资源
    最近更新 更多