【问题标题】:How can i use the "where like" query for number value in AdonisJS query builder?如何在 AdonisJS 查询生成器中使用“where like”查询数字值?
【发布时间】:2022-11-02 01:53:58
【问题描述】:

我们可以在 Adonis JS 中使用 where like 查询字符串值,如下所示

await ModelName.query()
  .where('descriptions', 'LIKE', "%somevalue%")

如果 descriptions 是字符串值,但不是数字值,则可以。

await ModelName.query()
  .where('quantity', 'LIKE', "%somevalue%")

这给了我operator does not exist: numeric ~~ unknown 的错误

所以需要先将值的类型从数字转换为字符串。 对此有什么建议吗?

【问题讨论】:

  • 您正在使用 like 运算符搜索数值,这很奇怪。你确定你需要那种功能吗? .where('quantity', somevalue) 将搜索确切的数字,例如,如果您想要大于 9000 的数字,您可以编写 .query('qty', '>', 3)。但是用类似查询搜索数字?为什么需要这样的功能?
  • 因为我想在后端实现搜索功能。之前我们使用前端mui数据表的搜索功能,但是现在因为db表中的行非常大,像100k,所以我们需要将搜索功能移到后端。请检查前端 muitable 的屏幕截图,显示 qty 的搜索结果。
  • 如果您真的需要这个(而且我认为通过相似性搜索数字根本没有用),您将需要在该表中再创建一列,称为quantity_string 或其他内容并将其设为varchar。比使用该列进行搜索。

标签: sql node.js postgresql backend adonis.js


【解决方案1】:

await ModelName.query().whereRaw("quantity::TEXT like '%somevalue%'")

会是这样的

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 2012-10-05
    • 2017-09-12
    • 2016-03-23
    • 2019-05-06
    • 1970-01-01
    • 2013-03-23
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多