hab ich auch schon öfters versucht:
eine where-klausel schrittweise aufbauen: geht, kann aber kompliziert werden (mit “1=1” starten und dann mit " AND …=?" oder " OR …=?" schön StringBuildern, kann aber beliebig komplex werden
eine bestehende Abfrage aufbrezeln: fast unmöglich, nach dem WHERE kommen group bys und havings, vorher schon joins und komplizierter zeugs, das ergebnis eines parsers kann ein ziemlich aufgebrezelter Baum sein, den du nicht wirklich ‘generisch’ entwirren kannst. Vom irrsinigen Quellcode mit den in ein paar Jahren unlesbaren Stringmanipulationen mal ganz zu schweigen.
Eine typische Kundenanforderung: “Wir wollen frei definierte Reports, aber wir können kein SQL und wollen uns auch nicht mit den verfügbaren Tools befassen, die sind zu kompliziert. Programmier mal was einfaches”.
Allein die Idee, man könne <, >, =, <=, >=, NULL oder nicht?, LIKE ‘regex’, AND, OR, NOT, subselects, … usw. mal einfach so “per Programm” und “ganz flexibel” haben, ohne sich wirklich mit SQL zu befassen ist absurd.
Möglichkeiten:
A) Du einigst dich mit deinen Kunden auf FEST vorgegebene Abfragen, die mit WHERE/HAVING 1=1 enden, an die du dann FESTE Klauseln auf die BEKANNTEN Spalten per Stringmanipulationen anfügst.
oder
B) Der Kunde installiert ein übliches Report-Designer Tool und lernt das.
oder
C) Du schleifst entsprechend geglättete Views nach außen durch und gehst mit Excel->Daten->Externe-Daten drauf, dann können die da selbst filtern
Aber beachte: A) ist die schlechteste, unflexibelste Lösung - und die einzige, bei der du Geld verdienst.