Я пытаюсь сделать запрос для поиска всех объектов, имена которых содержат текст:
@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
Как это исправить?
android
kotlin
android-room
Денис Бузмаков
источник
источник
Вы можете просто выполнить конкатенацию, используя конкатенацию строк SQLite.
источник
'%'
но может ли кто-нибудь объяснить, что это такое'||'
и почему?||
- оператор конкатенации строк. Думайте об этом как о+
Java String.Room поддерживает только named bind parameter : name, чтобы избежать путаницы между параметрами метода и параметрами привязки запроса.
Room автоматически привяжет параметры метода к аргументам привязки. Это выполняется путем сопоставления имени параметров с именем аргументов привязки.
источник