展平表中可能为 NULL 或空的数组

Posted

技术标签:

【中文标题】展平表中可能为 NULL 或空的数组【英文标题】:Flatten an array within a table which might be NULL or empty in presto 【发布时间】:2021-05-24 18:02:23 【问题描述】:

我在我的 sql 查询中使用了下表。

我想把它变成下面的形状

我该怎么做?我使用了 unnest 和 cross join 。因为是空数组,所以没看全图。

【问题讨论】:

。 .编辑您的问题并包含您正在使用的查询作为文本。如果你不知道如何格式化,那么你可以添加它,有人会修复格式。 对不起第一行grade=1 【参考方案1】:

您可以在LEFT JOIN 的上下文中使用UNNEST

WITH t(v) AS (VALUES 
    ARRAY[1,2],
    NULL,
    ARRAY[3,4],
    ARRAY[]
)
SELECT e
FROM t LEFT JOIN UNNEST(t.v) AS u(e) ON true

这是在Trino 319 (formerly known as Presto SQL) 中添加的

如果您使用的不是最新版本,您可以用这个替换:

...
FROM t CROSS JOIN UNNEST(if(t.v IS NULL OR cardinality(t.v) = 0, ARRAY[NULL], t.v)) AS u(e)

【讨论】:

以上是关于展平表中可能为 NULL 或空的数组的主要内容,如果未能解决你的问题,请参考以下文章

过滤 obj[array[@]] 为 nil 或空的数组

展平嵌套数组。 (爪哇)

TP测试查询数据库字段为null或空的字段

TP测试查询数据库字段为null或空的字段

TP测试查询数据库字段为null或空的字段

查询不等于 null 或空的地方