Search code examples
node.jsknex.jsadonis.js

Knex Query with Like + '%' is not working


I have this query that have to select all books filtering by a description ignoring uppercase/lowercase.

So I make this query in adonis.js / node.js:

 const queryBook = Book
            .query()
            .with('user')
 queryBook.where('description', 'like', '%'+bookDescription[0]+'%')

I have records with this bookDescription:

"Espanhol for Students ed.1 "

But when I try to filter using only "es" in lowercase, the knex don't return any record.

When I put "Es", return the book with the description that I put, so, the like %es% is not working.

I put one debug and I catch this:

knex:query select * from "books" where "description" like ? limit ? undefined +7ms
knex:bindings [ '%es%', 10 ] undefined +6ms

Apparently I don't find any wrong, but I think the like must return the record in lowercase..

I'm forgetting something?


Solution

  • You can use like this

    const queryBook = Book
                .query()
                .with('user')
     queryBook.where('description', 'like', `%${bookDescription[0]}%`)
    

    or

    
    const queryBook = Book
                .query()
                .with('user')
     queryBook.where('description', 'ilike', `%${bookDescription[0]}%`)
    
    

    More Info. view knexjs docuemnts