gpt4 book ai didi

sql - 如何使用 knex.js 以另一列作为条件编写 CASE 子句

转载 作者:行者123 更新时间:2023-12-04 01:37:59 33 4
gpt4 key购买 nike

所以我的代码如下所示:

.select('id','units',knex.raw('case when units > 0 then cost else 0 end'))

但它给了我这样的错误

hint: "No operator matches the given name and argument type(s). You might need to add explicit type casts."



知道我应该如何修正我的代码以便我可以使用另一列作为与列不同的条件吗?

最佳答案

我没有得到与您相同的错误:

CASE types integer and character varying cannot be matched



但无论如何,问题是你试图比较苹果和橙子。 Postgres 对列类型非常严格,因此尝试输入一个整数 0并且同一列中的字符串(值 cost )不会导致隐式转换。

把你的输出变成一个字符串就行了:
  .select(
"id",
"units",
db.raw("CASE WHEN units > 0 THEN cost ELSE '0' END AS cost")
)

示例输出:
[
{ id: 1, units: null, cost: '0' },
{ id: 2, units: 1.2, cost: '2.99' },
{ id: 3, units: 0.9, cost: '4.50' },
{ id: 4, units: 5, cost: '1.23' },
{ id: 5, units: 0, cost: '0' }
]

关于sql - 如何使用 knex.js 以另一列作为条件编写 CASE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58816549/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com