我的表中有一个可以为空的数组列:Array(Nullable(UInt16))。我希望能够使用arrayExists(或arrayAll)查询此列以检查它是否包含高于某个阈值的值,但是当数组包含空值时我得到异常:
异常:函数arrayExists的表达式必须返回UInt8,找到Nullable(UInt8)
我的查询位于距离为数组列的位置:
SELECT * from TracabEvents_ArrayTest
where arrayExists(x -> x > 9, distance);
我尝试将lambda中的比较更新为"(isNotNull(x)和x> 9)"但我仍然得到错误。有没有办法在这些表达式中处理空值,还是它们不受支持?
答案 0 :(得分:1)
使用notEmpty添加一个条件来过滤带空列表的行,并在arrayExists中使用assumeNotNull过滤。
SELECT * FROM TracabEvents_ArrayTest WHERE notEmpty(distance) AND arrayExists(x -> assumeNotNull(x) > 9, distance)