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

2w3kk1z5  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(553)

我的表中有一个可为null的数组列:array(nullable(uint16))。我希望能够使用arrayexists(或arrayall)查询此列,以检查它是否包含高于某个阈值的值,但当数组包含空值时,我得到一个异常:
异常:函数arrayexists的表达式必须返回uint8,可为null(uint8)
我的查询如下,其中距离是数组列:

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

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

uyhoqukh

uyhoqukh1#

为arrayexists中的x添加一个条件以使用notempty和assumenotnull筛选具有空列表的行。

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

相关问题