Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

273
Views
Sala de Android: seleccione la consulta con ME GUSTA

Estoy tratando de hacer una consulta para buscar todos los objetos cuyos nombres contienen texto:

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

Mensajes:

 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

También estoy intentando:

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

Mensajes:

 Error:Unused parameter: arg0

¿Cómo arreglar esto?

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

Room solo admite el parámetro de vinculación con nombre: nombre para evitar cualquier confusión entre los parámetros del método y los parámetros de vinculación de la consulta.

Room vinculará automáticamente los parámetros del método en los argumentos de vinculación. Esto se hace haciendo coincidir el nombre de los parámetros con el nombre de los argumentos de vinculación.

 @Query("SELECT * FROM user WHERE user_name LIKE :name AND last_name LIKE :last") public abstract List<User> findUsersByNameAndLastName(String name, String last);
over 4 years ago · Santiago Trujillo Report

0

Algunos ejemplos de palabras clave LIKE usando in dao con Room Database.

  1. Empezar con Search_Query

     @Query("SELECT * FROM hamster WHERE name LIKE :search_query || '%'") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
  2. Terminar con Search_Query

     @Query("SELECT * FROM hamster WHERE name LIKE '%' || :search_query ") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
  3. Obtener todos los que tienen Search_Query

     @Query("SELECT * FROM hamster WHERE name LIKE '%' || :search_query || '%'") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
  4. Use NOT LIKE para excepto los datos que tienen Search_Query

     @Query("SELECT * FROM hamster WHERE name NOT LIKE '%' || :search_query || '%'") fun loadHamsters(search_query: String?): Flowable<List<Hamster>>
over 4 years ago · Santiago Trujillo Report

0

Debe encerrar los caracteres % en su consulta de entrada, no en la consulta en sí.

Por ejemplo, prueba esto:

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

Entonces su valor String search debería verse así:

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

Además, el nombre del parámetro de enlace debe coincidir con el nombre de la variable, por lo que en lugar de arg0 debería verse así:

 @Query("SELECT * FROM hamster WHERE name LIKE :search") fun loadHamsters(search: String?): Flowable<List<Hamster>>
over 4 years ago · Santiago Trujillo Report

0

Simplemente puede concatenar usando la concatenación de cadenas SQLite.

 @Query("SELECT * FROM hamster WHERE name LIKE '%' || :search || '%'") fun loadHamsters(search: String?): Flowable<List<Hamster>>
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!