sql - 将数组从 jsonb_array_elements_text() 转换为整数数组

标签 sql postgresql jsonb

我有一个 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_textARRAY 构造函数一起使用,并将其转换为 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/

相关文章:

sql - PostgreSQL 从 jsonb 对象中获取任何值

json - 为什么在 JSONB 中提取显式 `null` 作为文本会产生 SQL `null` ?

PostgreSQL 字段中的 Django ProgrammingError

java - 用于替换符号的正则表达式

sql - 最小化动态sql中的函数调用?

sql - neo4j 中用于大型数据集的基于内容的 reco 系统

c# - 将数据从文本框插入到 Postgresql

sql - 如何比较表中最后一个和倒数第二个条目的值?

postgresql - 在 postgresql 中恢复已删除的行

django - 使用 Django 搜索 PostgreSQL 并传递 null 或空字符串值