带有 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]}%`])
我有这个查询,必须 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]}%`])