eval вычисляет свой аргумент в строку запроса, а затем выполняет её как один SELECT-запрос.
Эта табличная функция является экспериментальной и по умолчанию отключена. Чтобы включить её, используйте настройку allow_experimental_eval_table_function:
Синтаксис
Аргументы
expression— Константное выражение, возвращающее строку запроса. Допускаются параметры запроса и скалярные подзапросы.SELECT ...— ЗапросSELECT, возвращающий строку запроса. Эта форма представляет собой синтаксический сахар для скалярного подзапроса:eval(SELECT ...)эквивалентноeval((SELECT ...)), поэтому запрос должен возвращать ровно одну строку и один столбец.
StringNullable(String)LowCardinality(String)LowCardinality(Nullable(String))
NULL, eval генерирует исключение.
Возвращаемое значение
Возвращает результат сгенерированного запросаSELECT в виде таблицы.
Схема выходных данных определяется при анализе табличной функции eval, поэтому внешние запросы могут ссылаться на реальные имена столбцов и типы сгенерированного запроса.
Примеры
Вычислите константное выражение:SELECT-запрос и возвращает текст запроса:
Ограничения
- Сгенерированный запрос должен представлять собой один
SELECT-запрос без предложений вывода, таких какINTO OUTFILEилиFORMAT.evalне выполняет несколько операторов. - Сгенерированный запрос должен быть самодостаточным: он обрабатывается в собственной области видимости и не может ссылаться на псевдонимы
WITHили столбцы внешнего запроса. - Сгенерированный запрос не может повторно использовать табличную функцию
eval. evalнельзя использовать в качестве аргумента другой табличной функции, напримерremote('host', eval(...)). Чтобы выполнить сгенерированный запрос на удалённом сервере, оберните его вview:remote('host', view(SELECT * FROM eval(...))).- Аргумент вычисляется один раз при анализе запроса, а не отдельно для каждой строки или блока.
- Во внешнем журнале запросов записывается исходный запрос, содержащий
eval; сгенерированныйSELECT-запрос не записывается как отдельный пользовательский запрос.
См. также
- табличная функция
view - настройка
allow_experimental_eval_table_function