Hallo Pit,
MAX kannst Du auf alles anwenden was sortierbar ist.
Wegen des AS: ich habe mich in deinen Klammern verirrt. Ich versuch's mal zu sortieren.
LPAD(
MAX(
CAST(
SUBSTRING_INDEX(MeineSpalte,
"-",
-1
) AS Wert
)
),4,"0"
)
Das AS Wert
gehört gar nicht zum CAST, da habe ich mich verlesen. Es ist ein Spalten-Alias für das SUBSTRING_INDEX Ergebnis.
Aber das macht es nicht besser. Nun fehlt dem CAST die Typenangabe, und die ist in keiner mir verfügbaren MYSQL-Doku optional. D.h. eigentlich ist das ein Syntaxerror, das SQL dürfte so nicht laufen.
Wäre es ggf. sinnvoller, über die Tabelle eine temporäre Tabelle zu erzeugen, innerhalb derer man die relevante Spalte in 3-4 Einzelspalten zerlegt
Wenn Deine "meineSpalte" nun tatsächlich NOCH mehr Attribute bündelt, tja, dann solltest Du vielleicht doch mal schauen, an wie vielen Stellen Du die Tabelle nutzt und über ein Redesign nachdenken.
Nun ja. Du könntest einen VIEW erzeugen, der meineSpalte
zerlegt, und deine Query auf diesen View absetzen. Das macht die Query lesbarer. Das Erzeugen einer temporären Tabelle macht die Sache nicht wirklich performanter, und das Erzeugen der Einzelspalten geht zwar (z.B. mit geschachtelten SUBSTRING_INDEX), ist aber mühsam. Wenn es nur um "dieses Jahr" geht, könnte es einfacher sein, das in die Filterbedingung zu setzen, also myStatus = 'KL' AND meineSpalte LIKE 'KL-19%'
.
Rolf
sumpsi - posui - clusi