[英]Converting a PostgresSQL query into Knex.js
我必须使用 knex 在whereIn
使用LOWER
函数。 我想更改下面的代码行
whereIn("name", members);
如果我这样做whereIn('LOWER("name")', members);
,由于Column LOWER("name") is not present.
我尝试使用 knex.raw 但再次没有得到正确的语法。
const roleMembers = await t("roles")
.select({ role_id: "id" }, "name")
.whereIn(t.raw("LOWER('name')"), members);
当我尝试添加 await 时,语法错误消失了,但是当我执行此代码时,出现以下错误
错误: LOWER(name) - syntax error at or near "LOWER"
我指的是http://knexjs.org/#Builder-whereIn
我们有whereRaw
,我们有类似的东西whereIn
吗? 需要一些帮助来解决这个问题。
注意:我使用了所有LOWER,lower,Lower。
knex.raw()
可用于列组件
knex('members').whereIn(knex.raw('Lower("name")'), members)
select * from `members` where Lower("name") in ('Tom', 'Dick', 'harry')
最终解决方案如下。
const roleMembers = await t("roles")
.select({ role_id: "id" }, "name")
.whereIn(t.raw('LOWER("name")') as any, members);
我对原始代码的更改是
感谢 Matt 和 Mikael 的指导。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.