json_populate_recordset()

将JSON对象数组扩展到一组行的函数

json_populate_recordset() 是一个系统函数,它将顶级JSON对象数组扩展到一组行。

json_populate_recordset() 添加于 PostgreSQL 9.3

用法

json_populate_recordset ( base anyelement, from_json json ) → setof anyelement

base 参数必须是复合类型,其列名对应于JSON字段。

更改历史

示例

json_populate_recordset() 的基本用法示例

postgres=# CREATE TYPE foobar AS (id INT, val TEXT);
CREATE TYPE

postgres=# SELECT * FROM json_populate_recordset(NULL::foobar,  '[{"id":1,"val":"foo"}, {"id":2,"val":"bar"}]');
 id | val 
----+-----
  1 | foo
  2 | bar
(2 rows)

如果提供的JSON对象不包含与预期列名匹配的字段,则会发出NULL

postgres=# SELECT id IS NULL, id, val IS NULL, val
             FROM json_populate_recordset(NULL::foobar,  '[{"a":1,"val":"foo"}, {"id":2,"b":"bar"}]');
 ?column? | id | ?column? | val 
----------+----+----------+-----
 t        |    | f        | foo
 f        |  2 | t        | 
(2 rows)

如果JSON对象包含无法转换为预期列数据类型的值,则会引发ERROR

postgres=# SELECT * FROM json_populate_recordset(NULL::foobar,  '[{"id":"baz","val":"foo"}, {"id":2,"val":"bar"}]');
ERROR:  invalid input syntax for type integer: "baz"

分类

JSON系统函数

参见

jsonb_populate_recordset(),json_populate_record(),json_to_recordset()

反馈

请在此处提交关于"json_populate_recordset()"的任何评论、建议或更正 此处