【问题标题】:Knex.JS - How does one compare a lowercased input against lowercased field values?Knex.JS - 如何将小写输入与小写字段值进行比较?
【发布时间】:2021-06-23 02:47:59
【问题描述】:

所以,我将 Knex.JS 用于我的数据库。我想将小写输入与小写字段值进行比较。我以为我可以knex.raw 它,但显然我的脚本在我尝试时会中断。有没有人成功地将LIKE 与 Knex.JS 中的小写值进行比较?如果你这样做了,你是怎么做到的?

任何帮助都一如既往,非常感谢。

function findUsers(q) {
  return db("users")
    .where(
      knex.raw(`'LOWER("firstname")', "like", %${q.toLowerCase()}%`, "knex")
    )
    .orWhere("lastname", "like", `%${q}%`)
    .orWhere("username", "like", `%${q}%`)
    .orWhere("email", "like", `%${q}%`);
}

【问题讨论】:

  • apparently my script breaks以什么方式?
  • @JaromandaX - 它不返回任何结果。

标签: javascript database sql-like knex.js


【解决方案1】:

您可以将值包装在lower() 中,例如:

function findUsers(q) {
  return db('users')
    .where(knex.raw('lower("firstname")'), 'like', `%${q.toLowerCase()}%`)
    .orWhere(knex.raw('lower("lastname")'), 'like', `%${q}%`)
    .orWhere(knex.raw('lower("username")'), 'like', `%${q}%`)
    .orWhere(knex.raw('lower("email")'), 'like', `%${q}%`);
}

this Github issue

【讨论】:

  • 这个答案并不完全有效,但关于 GitHub 问题的建议确实有效,所以我将其标记为答案。有效的是使用whereRaw。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2018-05-04
  • 1970-01-01
  • 2011-01-09
相关资源
最近更新 更多