java - Android sqlite 查询以匹配包含文本的列

标签 java android sqlite

尝试进行查询,如果给定列包含其中任何位置的文本,则该查询将返回匹配项。例如,如果我要传递单词“really”,那么包含文本“This is a really long line of text”的列将匹配。到目前为止,我的查询仅在完全匹配时返回,因此它只会匹配包含“really”的列,仅此而已。

我尝试了几种方法,但似乎都返回相同的结果:

第一种方式(s 是我传入的字符串):

    Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE '%" + s + "%' COLLATE NOCASE", null, null, null, null);

下一步

String p_query = "SELECT COUNT(*) FROM data WHERE number=? COLLATE NOCASE";

最佳答案

Trying to make a query that will return a match if the given column contains the text anywhere inside.

这对我有用并且它是参数化的:

Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, 
        KEY_TITLE + " LIKE ?", new String[] {"%" + s + "%"}, 
        null, null, null);

“真的”是一个足够独特的词,但是如果您要搜索“冰”之类的东西并且不想搜索“骰子”、“恶习”、“冰淇淋”等,则必须使用不同的模式,例如: "% "+ s + "%"s + "%"

或者使用带有 tokenizer 的 FTS 表,比如 Porter 词干提取。

关于java - Android sqlite 查询以匹配包含文本的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16022427/

相关文章:

java - 如何在 Google 电子表格中获取单个工作表的工作表名称 - Google Sheet Api v4 - Java

java - 应用程序无法加载请求的类: com. mysql.cj.jdbc.Driver

java - Win32 文件属性对话框未通过 JNI 在 Java Swing 应用程序中显示

android - 如何强制生命周期从 onPause 到 onResume

android - 我们可以绕过 Intent 相机中的保存和删除选项以在 Android 中拍摄图像吗?

android - android中选择查询报错

java - Spark 2.2.2 : CountVectorizerModel Index 24691 out of bounds for vector of size 23262

Android 自定义按钮边距

java - 在java ContentValues中转义sqlite列名

c# - 短小精悍: "Insufficient parameters supplied to the command"