当数组包含空值时,如何使用arrayExists函数?

时间:2017-12-07 10:17:45

标签: sql clickhouse

我的表中有一个可以为空的数组列:Array(Nullable(UInt16))。我希望能够使用arrayExists(或arrayAll)查询此列以检查它是否包含高于某个阈值的值,但是当数组包含空值时我得到异常:

异常:函数arrayExists的表达式必须返回UInt8,找到Nullable(UInt8)

我的查询位于距离为数组列的位置:

SELECT * from TracabEvents_ArrayTest
where arrayExists(x -> x > 9, distance);

我尝试将lambda中的比较更新为"(isNotNull(x)和x> 9)"但我仍然得到错误。有没有办法在这些表达式中处理空值,还是它们不受支持?

1 个答案:

答案 0 :(得分:1)

使用notEmpty添加一个条件来过滤带空列表的行,并在arrayExists中使用assumeNotNull过滤。

SELECT * FROM TracabEvents_ArrayTest WHERE notEmpty(distance) AND arrayExists(x -> assumeNotNull(x) > 9, distance)