eval évalue son argument en chaîne de requête, puis exécute cette chaîne comme une seule requête SELECT.
Cette fonction de table est expérimentale et désactivée par défaut. Activez-la avec le paramètre allow_experimental_eval_table_function :
Syntaxe
Arguments
expression— Une expression constante qui renvoie une chaîne de requête. Les paramètres de requête et les sous-requêtes scalaires sont autorisés.SELECT ...— Une requêteSELECTqui renvoie une chaîne de requête. Cette forme est un raccourci syntaxique pour une sous-requête scalaire :eval(SELECT ...)est équivalent àeval((SELECT ...)). La requête doit donc renvoyer exactement une ligne et une colonne.
StringNullable(String)LowCardinality(String)LowCardinality(Nullable(String))
NULL, eval lève une exception.
Valeur renvoyée
Renvoie le résultat de la requêteSELECT générée sous forme de table.
Le schéma de sortie est déterminé lors de l’analyse de la fonction de table eval, de sorte que les requêtes externes peuvent faire référence aux noms et aux types réels des colonnes de la requête générée.
Exemples
Évaluez une expression constante :SELECT en entrée et renvoie le texte de la requête :
Restrictions
- La requête générée doit être une unique requête
SELECT, sans options de sortie telles queINTO OUTFILEouFORMAT.evaln’exécute pas plusieurs instructions. - La requête générée doit être autonome : elle est résolue dans sa propre portée et ne peut pas référencer les alias
WITHni les colonnes de la requête externe. - La requête générée ne peut pas réutiliser la fonction de table
eval. evalne peut pas être utilisé comme argument d’une autre fonction de table, telle queremote('host', eval(...)). Pour exécuter la requête générée sur un serveur distant, encapsulez-la dansview:remote('host', view(SELECT * FROM eval(...))).- L’argument est évalué une seule fois lors de l’analyse de la requête, et non une fois par ligne ou par bloc.
- Le journal des requêtes de la requête externe enregistre la requête d’origine qui contient
eval; la requêteSELECTgénérée n’est pas enregistrée comme une requête utilisateur distincte.
Voir aussi
- fonction de table
view - paramètre
allow_experimental_eval_table_function