无法使用PostgreSQL json_array_elements()函数将json数组转换为行

时间:2018-02-20 20:26:02

标签: sql json postgresql

我尝试在具有数组值的表上执行连接,其中数组中的每个元素都成为新行。

我正在研究从非常不同的json格式中提取特定键的数据库。根据我的提取查询,初始数据看起来不同。随着

SELECT id, content->'data' FROM other_table
WHERE content->'data' IS NOT NULL;

我明白了:

-----------------------------
  id (int)   |  data (json)
-----------------------------
   1         | [abc, def]
   2         | [ghi, jkl]
   3         |  mno

并且

SELECT id, content->>'data' FROM other_table
WHERE content->>'data' IS NOT NULL;

我明白了:

-----------------------------
  id (int)   |  data (text)
-----------------------------
   1         | ["abc", "def"]
   2         | ["ghi", "jkl"]
   3         |  "mno"

我想最终:

----------------
  id   |  data
----------------
   1   |  abc
   1   |  def
   2   |  ghi
   2   |  jkl

然而,

SELECT id, json_array_elements(data) 
FROM (SELECT id, content->'data' as data FROM other_table
      WHERE content->'data' IS NOT NULL) s 

我一直在

ERROR: cannot call json_array_elements on a scalar 
SQL state: 22023

我认为问题在于未映射的特定行'进入json数组,但只是单个元素。

如何将这些单个元素转换为数组?

我看了https://www.periscopedata.com/blog/the-lazy-analysts-guide-to-postgres-json,据说这应该是可能的。

我使用的是postgres 10.2。

0 个答案:

没有答案