如何从 Postgres 的 json 列中 select 字段?
How to select field from json column from Postgres?
我正在尝试在 Postgres 13 中做一个非常简单的查询。从阅读文档来看这似乎应该可行,但我一直收到错误消息:
Error executing SELECT statement. ERROR: column "bar" does not exist
Position: 8
我的 Table 和数据如下:
CREATE TABLE thing.foo (
bar json null
);
INSERT INTO thing.foo (bar) VALUES ('{"handle":123}');
SELECT bar->handle from thing.foo;
我也尝试过其他变体,例如
SELECT bar->>'handle' from thing.foo;
,
但 Postgres 似乎确定该列不存在。在顶级列 上做香草 select 确实 有效:
SELECT bar from thing.foo;
select输入该字段的正确方法是什么?
进一步挖掘后,这不是 Postgres 问题,而是 IntelliJ 的 Database Navigator 问题。看似直接的 SQL 查询结果被 IDE 错误地重写了。这是 IntelliJ 中的错误:
我查看了 Wireshark 的数据包捕获,发现它发出的查询与我请求的不同:
从我将查询提供给 Database Navigator 到它到达网络之间,查询是如何被破坏的。
我正在尝试在 Postgres 13 中做一个非常简单的查询。从阅读文档来看这似乎应该可行,但我一直收到错误消息:
Error executing SELECT statement. ERROR: column "bar" does not exist Position: 8
我的 Table 和数据如下:
CREATE TABLE thing.foo (
bar json null
);
INSERT INTO thing.foo (bar) VALUES ('{"handle":123}');
SELECT bar->handle from thing.foo;
我也尝试过其他变体,例如
SELECT bar->>'handle' from thing.foo;
,
但 Postgres 似乎确定该列不存在。在顶级列 上做香草 select 确实 有效:
SELECT bar from thing.foo;
select输入该字段的正确方法是什么?
进一步挖掘后,这不是 Postgres 问题,而是 IntelliJ 的 Database Navigator 问题。看似直接的 SQL 查询结果被 IDE 错误地重写了。这是 IntelliJ 中的错误:
我查看了 Wireshark 的数据包捕获,发现它发出的查询与我请求的不同:
从我将查询提供给 Database Navigator 到它到达网络之间,查询是如何被破坏的。