DB::Exception: Invalid type for filter in PREWHERE: Array(String) (version 21.1.3.32 (official build))

Есть таблица в кликхаус.Выполняю следующий запрос используя метод extract.

select * from posts where extract(text,'(виртуальны\w{,4}\s|дата-центр\w{,4}\s)') LIMIT 200

При выполнение запроса выходит следующая ошибка:

Code: 59, e.displayText() = DB::Exception: Invalid type for filter in PREWHERE: Array(String) (version 21.1.3.32 (official build))

Гуглил гугл ответов не дал.Думал дело в неправильности регулярного выражения но проверил через этот сайт регулярка правильная. Что я делаю не так ?


Ответы (1 шт):

Автор решения: vladimir

Я не могу воспроизвести ошибку - получаю 'Invalid type for filter in WHERE: String':

SELECT toString(number) AS text
FROM numbers(5)
WHERE extract(text, '(виртуальны\\w{,4}\\s|дата-центр\\w{,4}\\s)')

/*
Received exception from server (version 21.2.3):
Code: 59. DB::Exception: Received from localhost:9000. DB::Exception: Invalid type for filter in WHERE: String.
*/

Тем не менне используйте функции empty или notEmpty, чтобы исправить ошибку:

SELECT toString(number) AS text
FROM numbers(5)
WHERE empty(extract(text, '(виртуальны\\w{,4}\\s|дата-центр\\w{,4}\\s)'))

/*
┌─text─┐
│ 0    │
│ 1    │
│ 2    │
│ 3    │
│ 4    │
└──────┘
*/
→ Ссылка