带有Like +'%'的Knex查询无法正常工作

我有这个查询,必须通过忽略大写/小写的描述来选择所有要过滤的图书。

所以我在adonis.js / node.js中进行此查询:

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

我有与此bookDescription相关的记录:

“针对学生的西班牙语第1版”

但是当我尝试仅使用小写字母“ es”进行过滤时,knex不会返回任何记录。

当我输入“ Es”时,请返回带有我所描述的书,因此,%es%之类的书不起作用。

我进行了一次调试,发现了这一点:

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

显然我没有发现任何错误,但是我认为like必须以小写形式返回记录。

我忘记了什么?

lindw1981 回答:带有Like +'%'的Knex查询无法正常工作

您可以这样使用

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]}%`])
本文链接:https://www.f2er.com/3166423.html

大家都在问