Как я могу использовать функцию arrayExists, когда массив содержит нулевое значение?

У меня в таблице есть столбец массива, допускающий значение NULL: Array(Nullable(UInt16)). Я хочу иметь возможность запросить этот столбец с помощью arrayExists (или arrayAll), чтобы проверить, содержит ли он значение выше определенного порога, но я получаю исключение, когда массив содержит нулевое значение:

Исключение: выражение для функции arrayExists должно возвращать UInt8, найдено Nullable(UInt8)

Мой запрос ниже, где расстояние это столбец массива:

SELECT * из TracabEvents_ArrayTest, где arrayExists(x -> x > 9, расстояние);

Я попытался обновить сравнение в лямбда-выражении до "(isNotNull(x) и x > 9)", но я все еще получаю ошибку. Есть ли способ обработки пустых значений в этих выражениях или они еще не поддерживаются?

Спасибо

1 ответ

Решение

Добавьте условие для фильтрации строк с пустым списком, используя notEmpty и acceptNotNull для x в arrayExists.

SELECT * FROM TracabEvents_ArrayTest WHERE notEmpty(distance) AND arrayExists(x -> assumeNotNull(x) > 9, distance)
Другие вопросы по тегам