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(...))). - تُقيَّم الوسيطة مرة واحدة أثناء تحليل الاستعلام، وليس مرة لكل صف أو block.
- يسجّل سجل الاستعلامات الخاص بالاستعلام الخارجي الاستعلام الأصلي الذي يحتوي على
eval؛ ولا يُسجَّل استعلامSELECTالمُنشأ كاستعلام مستخدم منفصل.
ذات صلة
- دالة الجدول
view - إعداد
allow_experimental_eval_table_function