postgres9.4 循环通过 jsonb:select 如何 key:val 对

postgres9.4 loop through jsonb: how select vals of key:val pairs

这个 plpgsql 脚本 select 是一组 jsonb 对象 key:value 对中的键,但是如何 select 每对的值?

DO
$BODY$
DECLARE
    js jsonb := '{"a": "1", "b": "2", "c": "3"}';
    i text;
BEGIN
  FOR i IN SELECT * FROM jsonb_each_text(js)
  LOOP
    RAISE NOTICE 'key %', i;
    --RAISE NOTICE 'value %', i.value; <--fai
  END LOOP;
END;
$BODY$;

应该可以作为手册页 http://www.postgresql.org/docs/9.4/static/functions-json.html indicates return value is setof key text, value text. This post Postgres - array for loop 回答数组的问题。 还尝试了 jsonb_each() 和 jsonb_array_elements() 将迭代器更改为 jsonb,错误为 "Cannot extract element from an object"

正如您将 i 声明为 text 它仅包含第一列。声明为 RECORD:

DO
$BODY$
DECLARE
    js jsonb := '{"a": "1", "b": "2", "c": "3"}';
    i record;
BEGIN
  FOR i IN SELECT * FROM jsonb_each_text(js)
  LOOP
    RAISE NOTICE 'key %', i.key;
    RAISE NOTICE 'value %', i.value;
  END LOOP;
END;
$BODY$;