展平表中可能为 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 或空的数组的主要内容,如果未能解决你的问题,请参考以下文章