从 Postgres 中的 JSONB 数据创建 NUMERIC 数组

Creating NUMERIC array from JSONB data in Postgres

我有一个 Postgres JSONB 数据,其中包含一个 NUMERIC 类型的数组。我想提取这个 ARRAY 并将其存储在 NUMERIC[] 类型的变量中。这是我的 JSONB 对象。

{
  "userIds": [
    101,102,103
  ],
  "userRole": {
    "id": "1",
    "name": "Administrator"
  }
}

我如何从这个 JSONB 对象中提取 userIds 并将它们存储在 NUMERIC[] 中,因为我必须迭代这个 NUMERIC[]?

非常感谢任何帮助。

一种方法是使用 jsonb_array_elements 提取 id,将它们解析为正确的数据类型并再次将它们聚合到一个数组中,例如:

SELECT array_agg(id) FROM (
  SELECT
    (jsonb_array_elements('{
      "userIds": [101,102,103],
      "userRole": {
         "id": "1",
         "name": "Administrator"
     }
   }'::jsonb->'userIds')::numeric)) j(id);

   array_agg   
---------------
 {101,102,103}
(1 row)

如果您想将这些值作为结果集中的行进行迭代,请不要理会外部查询:

SELECT
  jsonb_array_elements('{
    "userIds": [101,102,103],
    "userRole": {
   "id": "1",
   "name": "Administrator"
    }}'::jsonb->'userIds')::numeric;

 jsonb_array_elements 
----------------------
                  101
                  102
                  103
(3 rows)