【问题标题】:Checking if a map or array is empty in Presto?检查 Presto 中的地图或数组是否为空?
【发布时间】:2017-10-26 18:55:43
【问题描述】:

如何在 Presto 中检查地图是否没有键?如果我有办法检查数组是否为空,我可以使用map_keys 函数来确定映射是否为空。

【问题讨论】:

    标签: sql presto


    【解决方案1】:

    要检查数组是否为空,只需将其与= array[] 进行比较。 示例:

    presto> select (map_keys(map(array[], array[])) = array[]) as is_empty;
    
     is_empty
    ----------
     true
    (1 row)
    

    同样,要检查地图是否为空,只需将其与= map() 进行比较即可。 示例:

    presto> select (map(array[], array[]) = map()) as is_empty;
    
     is_empty
    ----------
     true
    (1 row)
    

    【讨论】:

    • 我收到了'=' cannot be applied to array(row(value integer)), array(row(VALUE integer)),你知道可能出了什么问题吗?
    • @LeoJiang 怎么复制?我试过select array[cast(row(1) as row(value integer))] = array[];,它正确返回了false(在Presto中master
    • 我们可能使用了一个奇怪的 Presto 版本,我找到了另一种解决方案,将地图转换为 JSON,然后将其转换为字符串。谢谢。
    【解决方案2】:

    您可以使用cardinality函数:https://prestodb.io/docs/current/functions/array.html#cardinality

    select cardinality(array[]) = 0;
     _col0
    -------
     true
    (1 row)
    

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 2017-09-13
      • 2018-08-21
      相关资源
      最近更新 更多