我第一次使用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; (跳过一个单词)结果没有显示出来。
如何修改我的查询以允许用户查找街道,即使他们跳过单词?
答案 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