SQL presto - 交叉联接解除空值嵌套

Aud*_*mdi 4 sql null presto unnest trino

我有不同大小的数组,我希望数组中的每个值位于单独的行中。为此,我使用了交叉连接取消嵌套。但是它正在工作,它正在删除空数组。

因此,当我这样做时,我的列 ID 包含不同的数组,其中一些为空

select *
    from table 
    cross join unnest (t.id) as t(order_id)
    where length(order_id) = 5  or order_id is NULL
 
Run Code Online (Sandbox Code Playgroud)

我只得到以下结果

ID 订单号
23deo jfr32 6582w 23deo
23deo jfr32 6582w 杰夫32
23deo jfr32 6582w 6582瓦

而且我要

ID 订单号
23deo jfr32 6582w 23deo
23deo jfr32 6582w 杰夫32
23deo jfr32 6582w 6582瓦
无效的 无效的

如果有人知道如何取消嵌套空值,我们将不胜感激。我一直在互联网上查找,我发现我们可以包含一个WITH ORDINALITY 子句,但我不知道它是如何工作的。

lef*_*oin 5

使用LEFT JOIN UNNEST而不是CROSS JOIN UNNEST. Presto 319中添加了该功能

如果您有以前的版本,那么解决方法可以是使用子查询LEFT JOIN

with exploded as (
select *
    from table t
    cross join unnest (t.id) as t(order_id)
)

select t.*, e.order_id 
  from table t
       left join exploded e on t.join_key=e.join_key
Run Code Online (Sandbox Code Playgroud)

只需使用正确的连接密钥