gpt4 book ai didi

arrays - Postgresql jsonb 列表联合

转载 作者:行者123 更新时间:2023-11-29 13:54:37 24 4
gpt4 key购买 nike

我希望可以直接执行以下操作:给定包含

形式的 jsonb 的行
{
'a':"hello",
'b':['jim','bob','kate']
}

我希望能够从表中获取所有“b”字段(如从 mytable 中选择 jsondata->“b”),然后形成一个列表,其中包含至少出现在一个“b”中的所有字符串' field 。 (基本上是一个集合并集。)

我该怎么做?还是我最好使用 python 脚本来提取“b”条目,在那里执行集合联合,然后将其存储回其他地方的数据库中?

最佳答案

这为您提供了 json 列表“b”中元素的联合集。

SELECT array_agg(a order by a) 
FROM (SELECT DISTINCT unnest(txt_arr) AS a FROM
(SELECT ARRAY(SELECT trim(elem::text, '"')
FROM jsonb_array_elements(jsondata->'b') elem) AS txt_arr
FROM jtest1)y)z;

查询说明:

  • 从 b 获取列表作为 jsondata->'b'
  • jsonb_array_elements() 函数将 JSON 数组扩展为一组 JSON 值。
  • 通过 trim() 函数修剪元素中的 " 部分。
  • 修剪后使用 array() 函数再次转换为数组。
  • 通过使用 unnest() 函数取消嵌套来获取不同的值。
  • 最后使用array_agg()组成预期结果。

关于arrays - Postgresql jsonb 列表联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com