相关疑难解决方法(0)

Android Room - 使用LIKE选择查询

我正在尝试进行查询以搜索名称中包含文本的所有对象:

@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Run Code Online (Sandbox Code Playgroud)

消息:

Error:no viable alternative at input 'SELECT * FROM hamster WHERE name LIKE %'
Error:There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (near "%": syntax error)
Error:Unused parameter: arg0
Run Code Online (Sandbox Code Playgroud)

我也在尝试:

@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Run Code Online (Sandbox Code Playgroud)

消息:

Error:Unused parameter: arg0
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

android kotlin android-room

73
推荐指数
3
解决办法
2万
查看次数

Room SQLite 数据库 - 删除所有 LIKE %:param%

我有一个 Room 问题,我无法在其他地方找到帮助 - 在 SQLite 中使用“LIKE”时通常用于匹配任意数量字符的“%”不适用于我们正在使用的 Room 删除查询我团队的项目。

在我们的一个 DAO 中,我们有一个在 Kotlin 中定义为字符串的删除查询:

const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE :reservationCode"
Run Code Online (Sandbox Code Playgroud)

以及同一个 DAO 中的 deleteRequest:

@Query(DELETE_BY_RESERVATION_CODE)
fun deleteRequest(reservationCode: String)
Run Code Online (Sandbox Code Playgroud)

但是,在 ':reservationCode' 参数引用周围添加百分比符号后,我们得到以下错误:

在输入“DELETE FROM requests WHERE uri LIKE %”处没有可行的替代方案

有没有人知道在 Room DB 查询中使用“LIKE”时如何使用百分比符号?我和我的团队(不精通 SQL)希望它的行为像 SQLite,但事实并非如此!

 

sqlite android kotlin android-room

3
推荐指数
1
解决办法
1188
查看次数

标签 统计

android ×2

android-room ×2

kotlin ×2

sqlite ×1