我有一个 JSON 如下:
{
"users": [1, 2, 3]
}
我正在将 users
JSON 数组转换为 PostgreSQL 数组:
select user.identifier
from jsonb_array_elements_text(('{"users": [1, 2, 3]}'::jsonb)->'users') as user(identifier);
这将返回一组 text
值。我想要一组 integer
值。使用子查询,它可能看起来像下面这样,但这相当笨拙:
select user.identifier
from (select user.identifier::integer from jsonb_array_elements_text(('{"users": [1, 2, 3]}'::jsonb)->'users') as user(identifier)) user
如果没有额外的子查询,这是否可行?我在文档中找不到这样的语法或实用函数。
最佳答案
您可以将 jsonb_array_elements_text
与 ARRAY
构造函数一起使用,并将其转换为 int[]
,例如:
SELECT ARRAY(
SELECT jsonb_array_elements_text('{"users": [1, 2, 3]}'::jsonb->'users'))::int[]
关于sql - 将数组从 jsonb_array_elements_text() 转换为整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253954/