Nun bin ich auf den Ansatz gestoßen, das mit einem Regex – etwa [a-zA-Z_0-9.]+\s+[adescADESC]+ – abzufangen.
Das mag auf manchen „elegant“ wirken, ist es aber nicht.
Grund:
Für Dich (oder einen nachfolgenden Programmierer) wird bei einem Regex schwerer erkennbar, was denn erlaubt sein soll. Bei der vermeintlich „stumpfen“ Methode der Notierung erlaubter konkreter Werte ist das sofort und jederzeit sichtbar.
Fazit:
Bleibe bei
... bediene ich mich einer Liste von erlaubten Spalten und Sortierreihenfolgen, gegen die geprüft wird.
denn das ist einfach einfacher.
Auch der Umstand, dass ggf. nach berechneten Werten sortiert werden soll ändert daran nichts, denn diese kann man z.B. in eine View aufnehmen und diese View „befragen“ oder halt mit etwas wie SELECT (a+b)*c AS sortVal
in der Abfrage notieren und sortVal
als Sortierung erlauben...