gpt4 book ai didi

postgresql - 如何将 PostgreSQL jsonb_set 格式化为准备好的语句

转载 作者:行者123 更新时间:2023-12-04 18:00:36 28 4
gpt4 key购买 nike

var query=`UPDATE "public"."vehicle_ads" 
SET options=
jsonb_set(
options,
'{$1, ${subgroup}, -1}',
'{"name": "${optionName}"}'::jsonb
)
WHERE "vehicleId"=${id}`;

我在上述查询中遇到以下问题。如果我用 ${group} 替换 $1,没有错误。但是如果我留下 $1 并将 group 作为准备好的语句传递,我会收到错误...
bind message supplies 1 parameters, but prepared statement "" requires 0

我的目标是标记整个查询,例如:
var query=`UPDATE "public"."vehicle_ads" 
SET options=
jsonb_set(
options,
'{$1, $2, -1}',
'{"name": $3}'::jsonb
)
WHERE "vehicleId"=$4`;

然后...
could not determine data type of parameter $1

我知道我迷失在模板字符串和 Postgres 的格式汤中,不确定什么需要刻度、单引号或双引号。任何帮助是极大的赞赏。

编辑:

这是我正在做的细节。

我有一个嵌套对象,其中车辆选项数据存储为 jsonb 字段。它具有以下形式:
{
"Group": {
"SubGroup": [
{
"name": string,
"hasOption": bool
}
...
]
...
}
...
}

我想编辑子组中的名称。例如 Powertrain.Drivetrain[0].name='AWD';

最佳答案

您必须将变量转换为 text在使用 to_jsonb 将其转换为 jsonb 之前

UPDATE table SET body = jsonb_set(options, '{key}', to_jsonb($1::text));

关于postgresql - 如何将 PostgreSQL jsonb_set 格式化为准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043996/

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