moin,
das thema hat mir keine ruhe gelassen und ich muss mich selbst korregieren. es gibt unter mysql eventuell eine lösung, wenn sie auch unschön ist. ich würde wie gesagt dafür eine eigene funktion verwenden, aber hier mal mein lösungsansatz.
man kann sich eine variable zunutze machen, die man in die abfrage mit einbaut. in ersten ergebnisdatensatz wird die variable mit dem array initialisiert, sagen wird die varable heisst v_ausgabe. ich kenne den mysql dialekt dazu nicht genau, deswegen verwende ich ein wenig speudo code.
SELECT v_ausgabe = '1,4,4568'
FROM dual
;
jetzt kommt die eigentliche tabelle mit rein und der trick ist mit substr zu arbeiten. damit kannst du die werte rausfiltern, die matchen.
SELECT v_ausgabe = '1,4,4568' Ausgabe, 1 Sortierung
FROM dual d
ORDER BY 2
UNION ALL
SELECT v_ausgabe = SUBSTR(v_ausgabe, a.nr, ''), 2
FROM artikel a
WHERE a.nr IN ('1,4,4568')
;
die sortierungsspalte brauchen wir, um sicherzustellen, dass die initialisierung zuerst ausgeführt wird. in der ausgabe musst du noch die trennzeichen und eventuelle leerzeichen behandeln, das lasse ich hier aber mal weg. ich habe leider kein mysql zur hand, kannst ja mal schauen, ob das geht.
Ilja