java - Android:带通配符的 SQL rawQuery (%)

标签 java android sqlite

我有一个 rawQuery() 和下面类似的 sql 字符串:

selectionArgs = new String[] { searchString };
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs);

但现在我必须在我的搜索中包含一个通配符,所以我的查询看起来像这样:

SELECT column FROM table WHERE column LIKE 'searchstring%'

但当查询包含单引号时,会抛出以下 SQLite 异常:android.database.sqlite.SQLiteException: bind or column index out of range

如何在带有通配符元素的 SQL 查询中运行带有 selectionArgs 的 rawQuery?

最佳答案

您必须将 % 附加到 selectionArgs 本身:

selectionArgs = new String[] { searchString + "%" };
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs);

注意:相应地,searchString 字符串中的 %_ 仍然可以用作通配符!

关于java - Android:带通配符的 SQL rawQuery (%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934854/

相关文章:

java - 正则表达式在字符串中查找键->值

android - 你能对使用 Hilt 构造函数注入(inject)的 Android 工作人员进行单元测试吗

sql - 全文搜索只匹配某些词?

java - 如何有效地获得一组的所有对?

java - SocketChannel 的 write() 方法在应该抛出异常时却没有抛出异常

java - 如何向 HttpSecurity 添加自定义过滤器并检索用户? ( Spring 安全)

android - 如何完全覆盖 9-PATCH-PNG?

android - 如何知道我的应用程序是否在 Bluestacks 上运行?

android - 部分手机复制数据库失败

sqlite3 : Disabling primary key index while inserting?