Question

Je champs dans une base MySQL qui ressemble à ceci:

  

Constant1, constante2, variable1, variable2, formule

Le champ de formule stocke une formule utilisant Constant1, constante2, variable1 et variable2.

Par exemple, le champ de formule peut contenir un calcul comme ceci:

  

* constante1 variable1

Quand j'utilise une instruction select comme ceci:

SELECT constant1, constant2, variable1, variable2, formula
FROM table

Comment puis-je récupérer le résultat du calcul de constant1 * variable1 basé sur champ de formule?

Était-ce utile?

La solution

Vous avez besoin d'une des deux approches:

  • Appelez une sorte de fonction eval sur votre formule.
  • Parse la formule dans un arbre d'expression, remplacer les valeurs et évaluer l'expression.

Usig eval est rapide à mettre en œuvre mais dangereuse parce qu'elle pourrait faire quelque chose que vous ne vous attendiez pas. La formule est Parsing mieux fait avec une bibliothèque dédiée à la construction de parseurs, mais si votre syntaxe d'expression est très simple, vous pouvez écrire vous-même analyseur sans utiliser une bibliothèque. Dans les deux cas SQL n'est pas la bonne langue pour cela.

Je vous recommande de trouver une bibliothèque qui peut vous aider à analyser la formule. Quelle que soit la voie que vous choisissez bien, je vous suggère de faire le gros du travail sur la base de données client, pas dans SQL. SQL est tout simplement pas conçu pour ce genre de tâche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top