【发布时间】:2018-05-16 09:59:50
【问题描述】:
我有一个像这样的 json
{
"elements": [ "element1", "element2", "element3" ]
}
我想遍历它的元素并打印它们。 我是这样做的
do $$
declare
datajson jsonb := '{
"elements": [ "element1", "element2", "element3", "element4" ]
}';
element varchar(128);
begin
foreach element in array jsonb_array_elements(datajson->'elements')
loop
raise notice '%', element;
end loop;
end;
$$;
但它失败并出现错误query select jsonb_array_elements(datajson->'elements') returned more than one row。
有什么问题?
更新
试过这个建议:
do $$
declare
datajson jsonb := '{
"elements": [ "element1", "element2", "element3", "element4" ]
}';
element varchar(128);
begin
foreach element in array
SELECT array_agg(jsonb_array_elements) FROM jsonb_array_elements(datajson->'elements')
loop
raise notice '%', element;
end loop;
end;
$$;
但这只会给出语法错误:
ERROR: 42601: syntax error at or near "SELECT"
LINE 7: SELECT array_agg(jsonb_array_elements) FROM jsonb_array_...
^
LOCATION: scanner_yyerror, scan.l:1134
尝试在不使用 FOR r IN (...) 并声明 RECORD 变量的情况下执行此操作。
【问题讨论】:
标签: sql json postgresql plpgsql