在 postgresql 中返回 jsonb 标量的所有元素

Returning all elements of a jsonb scalar in postgresql

我有一个包含标量值的 jsonb 列。我试图 return 该标量值的所有元素作为单独的行。我的 postgres 版本是 9.6。例如:

SELECT jsonb ->> 2
FROM (
    SELECT '["mango", "aaple", "banana", "orange", "berry"]'::jsonb
) s

上面的 sql returns banana 正如预期的那样,因为它是标量值中的第二项 (jsonb ->>2)。我如何 return 将所有项目作为单独的行,如下所示?

mango
aaple
banana
orange
berry

您可以使用函数 jsonb_array_elements :

SELECT jsonb_array_elements(jsonb)::text
FROM (
SELECT '["mango", "aaple", "banana", "orange", "berry"]'::jsonb
) s


result: 
"mango"
"aaple"
"banana"
"orange"
"berry"