Avatar ·

Android Room:如何在带参数的查询中正确使用LIKE?

大家好!我是Kotlin Android开发的新手,使用Room处理本地数据库。我有一个User实体,想通过SQL的LIKE操作符实现按姓名搜索用户。

这是我的DAO实体:

@Dao
interface UserDao {
    @Query("SELECT * FROM users WHERE name LIKE '%:searchQuery%'")
    suspend fun searchUsers(searchQuery: String): List<User>
}

我从ViewModel调用这个方法:

class UserViewModel(private val userDao: UserDao) : ViewModel() {
    fun search(query: String) {
        viewModelScope.launch {
            val users = userDao.searchUsers(query)
            // 处理结果
        }
    }
}

问题是查询没有返回任何结果,尽管数据库中有包含搜索字符串的姓名记录。我尝试过传递不同的值——完整姓名、部分字符串——但都没用。