Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PostgreSQL JSON列中提取单个字符串记录的值_Json_Postgresql - Fatal编程技术网

从PostgreSQL JSON列中提取单个字符串记录的值

从PostgreSQL JSON列中提取单个字符串记录的值,json,postgresql,Json,Postgresql,对于给定的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"'); 我可以

对于给定的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”(带引号)

我应该如何编写最后一个查询来提取'string'键的单个字符串值?

使用
#>
操作符,从指定路径获取JSON对象作为文本

SELECT value #>>'{}' FROM store WHERE key = 'string'
结果:
baz
而不是
“baz”。


编辑:

键='array'
时,也可以执行相同的操作:

SELECT value #>>'{foo}' FROM store WHERE key = 'array'
SELECT value #>>'{foo}' FROM store WHERE key = 'array'