带有 Like + '%' 的 Knex 查询不起作用

Knex Query with Like + '%' is not working

我有这个查询,必须 select 所有图书按描述过滤,忽略 uppercase/lowercase。

所以我在 adonis.js / node.js:

中进行了查询
 const queryBook = Book
            .query()
            .with('user')
 queryBook.where('description', 'like', '%'+bookDescription[0]+'%')

我有这方面的记录 bookDescription:

"Espanhol for Students ed.1 "

但是当我尝试仅使用小写 "es" 进行过滤时,knex 没有 return 任何记录。

当我放入 "Es" 时,return 带有我放入的描述的书,所以,类似的 %es% 不起作用。

我进行了一次调试并发现了这个:

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

显然我没有发现任何错误,但我认为 like 必须 return 小写的记录..

我忘记了什么?

你可以这样使用

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


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

更多信息。查看 knexjs 文档

对于不区分大小写的搜索,您可以使用以下类似查询

const queryBook = Book
        .query()
        .with('user')
queryBook.whereRaw(`LOWER(description) LIKE ?`, [`%${bookDescription[0]}%`])