对于给定的 Postgres 表:
CREATE TABLE "public"."store" (
"key" varchar(50) NOT NULL,
"value" json,
PRIMARY KEY ("key")
);
如果我填充以下 JSON 编码值:
INSERT INTO "store" VALUES ('integer', '1'),
('array', '{"foo": "bar"}'),
('string', '"baz"');
我可以像这样编写一个查询来提取 foo 的值:
SELECT value->>'foo' FROM store WHERE key = 'array'
它返回 bar 的字符串值(不带引号)。
但是,我不知道应该如何编写查询来获取字符串键的未编码值。以下查询返回“baz”(带引号)。
SELECT value FROM store WHERE key = 'string'
我应该如何编写最后一个查询来提取“字符串”键的单个字符串值?
最佳答案
使用 #>>
运算符,来自 docs : 获取指定路径的 JSON 对象作为文本
。
SELECT value #>>'{}' FROM store WHERE key = 'string'
结果:baz
而不是 "baz"。
编辑:
你也可以在 key = 'array'
时做同样的事情:
SELECT value #>>'{foo}' FROM store WHERE key = 'array'
关于json - 从 PostgreSQL JSON 列中提取单个字符串记录的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045375/