gpt4 book ai didi

mysql - 如何将 `knex` 's` raw` 方法的占位符设置为 null?

转载 作者:行者123 更新时间:2023-11-29 15:53:04 32 4
gpt4 key购买 nike

我尝试使用 knex raw 方法在 mysql 上调用批量更新查询。

   const ids:number[] = [1,2,3];
const values:string[] = ['apple', null, "orange"]
knex('testtable').raw(
`
UPDATE
TEST_TABLE
SET
COL1 = ELT(FIELD(id, :searchIds), :searchValues),
UPDATE_DATE = NOW()
WHERE ID IN (:searchIds)
`,
{ searchIds: ids, searchValues: values },
);`enter code here`

但是,并没有达到预期的结果。这是因为 value 包含字符串和 null,但 raw 方法的占位符不允许 null。请告诉我,如何将占位符设置为 null?

最佳答案

在 knex 中绑定(bind)值数组并不是这样工作的。 SQL有多种类型的数组,因此不能以明确的方式映射到SQL。

在文档中:https://knexjs.org/#Raw-Bindings是如何将值数组传递给 knex 的示例。

const myArray = [1,2,3]
knex.raw(
`select * from users where id in (${myArray.map(() => '?').join(',')})`,
[...myArray]
);

在这种情况下,使用命名绑定(bind)几乎是不可能的(实际上命名绑定(bind)会在 knex 内转换为位置绑定(bind),因此不会因此而影响性能)。

关于mysql - 如何将 `knex` 's` raw` 方法的占位符设置为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56663078/

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