首页 > 解决方案 > 如何在 postgresSQL 中将一个嵌套数组转换为一个简单数组

问题描述

我很难弄清楚如何将嵌套数组转换为 postgresSQL 中的简单数组。

我有一个包含内容的列[["one", "two", "three"]],我想将该列更改为["one", "two", "three"]. 所以基本上要删除一个嵌套数组。

有谁知道该怎么做?

编辑:我需要通过 ALTER COLUMN 更新数据库上的所有当前值

标签: arraysjsonpostgresql

解决方案


演示:db<>小提琴

假设您没有 JSON 数组,您可以使用unnest()将所有元素提取到一行中并重新聚合这些元素:

SELECT ARRAY(
    SELECT unnest(/*your array*/)
)

延伸阅读:


演示:db<>小提琴

如果你有 JSON 数组,你可以

  1. 使用json_array_elements()提取所有元素

    SELECT
        json_array_elements(a)
    FROM (
        SELECT '[["one", "two", "three"]]'::json as a
    ) 
    
  2. 或者您只需使用->运算符来获取第一个元素:

    SELECT
        a -> 0
    FROM (
        SELECT '[["one", "two", "three"]]'::json as a
    )s
    

更新所有 JSON 数据:

演示:db<>小提琴

UPDATE t
SET mydata = mydata -> 0;

推荐阅读