如何从 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 到它到达网络之间,查询是如何被破坏的。