gpt4 book ai didi

sql - 在 PostgreSQL 中从 jsonb 获取特定对象时出错

转载 作者:行者123 更新时间:2023-11-29 12:31:59 24 4
gpt4 key购买 nike

我创建了一个表:

CREATE TABLE mytable (
uuid int,
answers jsonb
);

插入一些 JSON 值和 id :

   db.query('insert into mytable(uuid,answers) values($1,$2::jsonb)',
[1,{ "user" : "1", "ans" : "Answer of 1" }])

我正在使用 node js 和 pg 作为 Postgres 的客户端。

数据输入成功,并按预期返回行。

SELECT answers FROM mytable 
{"ans": "Answer of 1","user": "1"}

但是当我试图检索值为 1 的“user”的“ans”的值时,它返回了一个错误:

SELECT
elements ->> 'ans'
FROM
mytable,
jsonb_array_elements(answers) elements
WHERE
elements ->> 'user' = '1'
ERROR:  cannot extract elements from an object
SQL state: 22023

最佳答案

this question您插入了一个 JSON 数组:[{...}, {...}]。现在,您的 SELECT 语句的结果集似乎是您插入了一个简单的对象:{...}。当然,您不能调用用于 JSON 数组的 jsonb_array_elements():demo with array , demo without array .

因此,如果您想插入一个 JSON 数组,您需要通过在您的 JSON 对象周围添加数组大括号来调整您的输入参数:[...]

如果您不想插入一个数组而是一个简单的 JSON 对象,那么您可以使用此查询,这样可以省去扩展数​​组的步骤。您可以直接调用对象:

demo:db<>fiddle

SELECT
uuid,
answers ->> 'ans'
FROM
mytable
WHERE
answers ->> 'user' = '1'

关于sql - 在 PostgreSQL 中从 jsonb 获取特定对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346900/

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