Estou tentando fazer uma consulta para pesquisar todos os objetos cujos nomes contêm texto:
@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Mensagens:
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
Também estou tentando:
@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Mensagens:
Error:Unused parameter: arg0
Como consertar isto?
android
kotlin
android-room
Denis Buzmakov
fonte
fonte
Você pode apenas concatenar usando a concatenação de string SQLite.
fonte
'%'
mas alguém pode explicar o que é'||'
e por quê?||
é um operador de concatenação de string. Pense nisso como+
em Java String.O Room só oferece suporte a parâmetro de vinculação nomeado : nome para evitar qualquer confusão entre os parâmetros de método e os parâmetros de vinculação de consulta.
O Room vinculará automaticamente os parâmetros do método aos argumentos de vinculação. Isso é feito combinando o nome dos parâmetros com o nome dos argumentos de ligação.
fonte