【问题标题】:Presto: Removing last element from variable length arrayPresto:从可变长度数组中删除最后一个元素
【发布时间】:2020-01-31 22:56:47
【问题描述】:

我有通过可变长度的数组。我需要删除最后一个元素。示例:

数组[1,2,3] -> 数组[1,2]

数组[5,2,1,4] -> 数组[5,2,1]

我尝试将 slice(Array[],-1) 设置为从后面开始,但我不知道长度,并试图避免进一步嵌套查询,因为它已经很乱了。

我已经阅读了这些选项,但没有找到我认为合适的解释:https://prestodb.github.io/docs/current/functions/array.html

【问题讨论】:

    标签: sql arrays presto


    【解决方案1】:

    目前,创建没有最后一个元素的数组的唯一方法是使用slice

    -- does not work for empty arrays
    slice(a, 1, cardinality(a) - 1)
    

    要处理空数组,您可以将其包装在 try

    -- returns NULL for empty array
    try(slice(a, 1, cardinality(a) - 1))
    

    slice 函数支持负索引指定从数组末尾开始计数的起始位置,但切片长度必须明确给出。请create a feature request

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 2014-12-09
      • 2015-09-10
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多