SQLite在查询中跳过一个单词

时间:2018-03-24 14:28:42

标签: android sql sqlite android-sqlite

我第一次使用SQLite(以及一般的数据库),我遇到了查询问题。

我的数据库包含街道名称,例如Via Cesare Correnti。允许用户使用此方法按名称搜索街道:

 public List<Street> saveQueryResult(String query) throws SQLException {
    query = query.replaceAll("'", "''");

    Cursor mCursor = mDataBase.query(
            TABLE_STREETS,
            ALL_COLUMN,
            KEY_NAME + " LIKE '%" + query + "%'",
            null,
            null,
            null,
            KEY_NAME + " ASC"
    );

    return createStreetsFromCursor(mCursor);
}

考虑到例如&#34;通过Cesare Correnti&#34;,如果用户搜索&#34;通过Cesare&#34;或者&#34; Cesare Correnti&#34;一切正常,但如果他搜索&#34; Via Correnti&#34; (跳过一个单词)结果没有显示出来。

如何修改我的查询以允许用户查找街道,即使他们跳过单词?

2 个答案:

答案 0 :(得分:1)

试试这个:

  

用%

替换白色空白字符
query = query.trim();
query = query.replaceAll(" ", "%");

示例:"Via Correnti""%Via%Correnti%"; 和

Cursor mCursor = mDataBase.query(
        TABLE_STREETS,
        ALL_COLUMN,
        KEY_NAME + " LIKE '%" + query + "%'",
        null,
        null,
        null,
        KEY_NAME + " ASC"
);

答案 1 :(得分:1)

在sqlite中使用全文虚拟表。这允许您对文本字段执行更好的匹配查询。包括空白区域。

创建虚拟表enrondata1使用fts3(内容TEXT);

然后使用MATCH

请参阅https://www.sqlite.org/fts3.html