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});
其中 db
是 SQLiteDatabase
的实例。
查询将 return 列 COLUMN1
.
中包含字符串 myString
值的所有行
您可以使用函数 INSTR()
而不是运算符 LIKE
:
执行相同的操作
String myQuery = "select * from " + MY_TABLE + " where instr(" + COLUMN1 + ", ?)";
我需要对我的本地数据库进行 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});
其中 db
是 SQLiteDatabase
的实例。
查询将 return 列 COLUMN1
.
中包含字符串 myString
值的所有行
您可以使用函数 INSTR()
而不是运算符 LIKE
:
String myQuery = "select * from " + MY_TABLE + " where instr(" + COLUMN1 + ", ?)";