Android Room – выбор запроса с помощью LIKE

Я пытаюсь сделать запрос для поиска всех объектов, чьи имена содержат текст:

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

Сообщения:

 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 

Также я пытаюсь:

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

Сообщения:

 Error:Unused parameter: arg0 

Как это исправить?

Вы должны приложить % символов в своем входном запросе, а не в самом запросе.

Например, попробуйте следующее:

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

Тогда ваше значение String search должно выглядеть так:

 search = "%fido%"; loadHamsters(search); 

Кроме того, имя параметра привязки должно соответствовать имени переменной, поэтому вместо arg0 оно должно выглядеть так:

 @Query("SELECT * FROM hamster WHERE name LIKE :search") fun loadHamsters(search: String?): Flowable<List<Hamster>> 

Вы можете просто выполнить сжатие с помощью конкатенации строк SQLite.

 @Query("SELECT * FROM hamster WHERE name LIKE '%' || :arg0 || '%'") fun loadHamsters(search: String?): Flowable<List<Hamster>> 
Intereting Posts
Есть ли способ показать все функции расширения данного класса Kotlin в Intellij IDE? добавление фрагмента в действие из фрагмента, который не работает в Pixel XL android версии 8.0.0 Чтение вывода от exec kotlin java.lang.VerifyError создает задачу градиента с kotlin Преобразование байт-массива в строку в Kotlin Правильно расширить класс Widget с помощью Kotlin Ошибка: Kotlin: несколько значений недопустимы для опции плагина. Org.jetbrains.kotlin.kapt: output Зачем использовать inline без lambdas Spring Data JPA: обращение с унаследованным свойством другого объекта Какова альтернатива URLEncodedUtils.format (params, «utf-8») в котлин? Добавить функцию расширений в класс Math в kotlin Как изменить свойства тестовых объектов в KotlinTest через interceptTestCase Почему компилятор Scala дает мне ошибку при передаче закрытого класса Kotlin в конструктор? Как сопоставить java.util.Optional <Something> с чем-то? в Котлине Как организовать файлы ресурсов макета в Android Studio?