【发布时间】:2018-10-12 18:38:18
【问题描述】:
我的 Room 存在问题,我无法在其他地方找到帮助 - 在 SQLite 中使用“LIKE”时,通常用于匹配任意数量字符的“%”不适用于我们的 Room 删除查询正在我团队的项目中使用。
在我们的一个 DAO 中,我们在 Kotlin 中将删除查询定义为字符串:
const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE :reservationCode"
还有一个deleteRequest在同一个DAO中:
@Query(DELETE_BY_RESERVATION_CODE)
fun deleteRequest(reservationCode: String)
但是,在 ':reservationCode' 参数引用周围添加百分比符号后,我们会收到以下错误:
输入'DELETE FROM requests WHERE uri LIKE %'没有可行的替代方案
有人知道在 Room DB 查询中使用“LIKE”时如何使用百分号吗?我和我的团队(不精通 SQL)预计它的行为类似于 SQLite,但事实似乎并非如此!
【问题讨论】:
-
我们的输入查询基于来自网络响应的字符串,我认为使用
"%" + input + "%"之类的内容围绕输入查询非常难看 -
但是我找到了一个更漂亮的解决方案来处理 DAO 中的问题,而不是用 "%" Link to the better solution 包装输入
-
感谢您的帮助,我已编辑问题以帮助遇到此问题的任何其他人。
标签: android sqlite kotlin android-room