Instruction SQL en arbre d'expression

c# expression-trees

Question

Je me demande comment on pourrait traduire une chaîne SQL en un arbre d'expression. Actuellement, dans Linq to SQL, l'arborescence d'expression est traduite en une instruction SQL. Comment se passe-t-il dans l'autre sens? Comment traduirais-tu

select * from books where bookname like '%The%' and year > 2008 

dans un arbre d'expression en c #?

Réponse populaire

Je ne sais pas s'il existe un moyen plus simple, mais j'ai écrit un lexer et un analyseur syntaxique d'expressions SQL dans un arbre de syntaxe abstraite personnalisé (car je ne connaissais pas les arbres d'expression de .net à l'époque) et je n'aimais pas vraiment analyser SQL.

La syntaxe n’est pas très conviviale pour l’analyse, car l’ordre est différent en fonction du contexte (par exemple, pas dans NOT IN ou IS NOT ), les jetons sont surchargés WHERE x IN (1, 2) ) et ainsi de suite.

Évidemment, utiliser un générateur d’analyseur plutôt que de faire votre propre analyse et analyse rendrait les choses plus faciles, mais je ne sais pas s’il existe quelque chose de plus spécifique à SQL.

Donc, écrire le vôtre est définitivement possible, bien que fastidieux.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi