Android SQLite 查询 return 包含特定文本的行

Android SQLite query to return rows that contains certain text

我需要对我的本地数据库进行 sqlite 查询,该数据库 returns table 的所有行都包含列中的特定字符串。问题是我只有那个字符串的一部分。

ID  COLUMN1   COLUMN2    COLUMN3
1  myString11111  timestamp   some_value
2. myString22222  timestamp   some_value

所以在上面的例子中我只知道myString这只是COLUMN1的部分内容。 到目前为止,这是我尝试过的:

String myQuery = "select * from " +  MY_TABLE + " where " + COLUMN1 + " LIKE ? " + "' " + myString + " '";

使用此查询会引发异常

android.database.sqlite.SQLiteException: near "' foo '": syntax error (code 1): , while compiling: select * from my_table where COLUMN1 LIKE ? ' foo '

有谁知道如果只知道部分内容就可以检索行? 提前致谢!

由于您对参数使用 ? 占位符,因此无需连接它们。您可以在 rawQuery() 方法的第二个参数中传递它们:

String myQuery = "select * from " +  MY_TABLE + " where " + COLUMN1 + " LIKE '%' || ? || '%'";
Cursor c = db.rawQuery(myQuery, new String[] {myString});

其中 dbSQLiteDatabase 的实例。
查询将 return 列 COLUMN1.
中包含字符串 myString 值的所有行 您可以使用函数 INSTR() 而不是运算符 LIKE:

执行相同的操作
String myQuery = "select * from " +  MY_TABLE + " where instr(" + COLUMN1 + ", ?)";