MySQL: Nach Teil eines Feldes sortieren
AllesMeins
- datenbank
Hiho,
ich hab mal wieder ein selten dämliches Problem - so wies es es echt nur in der Computerbranche geben kann ;)
Also folgendes: Ich habe eine MySQL Datenbank mit verschiedenen Personen. Nun sollen diese Personen (oder eine Teilmenge davon) nach Nachnamen sortiert ausgegeben werden. Das wäre ja an sich kein Problem, wenn nicht die Firma, die irgendwann im Jahre 1700 mal diese Datenbank angelegt hat den kompletten Personennamen in ein Feld gepackt hätte. Sprich, da steht jetzt "Sabine Musterfrau" in einem Feld. Umändern der Datenbank ist nicht, weil sonst irgendwelche anderen System nicht mal funktionieren würden. Und ich darf jetzt diese Dummheit ausbaden und muss irgendwie nach dem Nachnamen sortieren.
Erschwerend kommt noch hinzu, das es auch "Hugo Manuel von Mustermann" geben kann, sprich einfach am ersten Leerzeichen teilen ist nicht.
Irgend eine Idee wie ich alles vor dem letzten Leerzeichen wegschneide und dann danach sortiere?
Oder habt ihr einen anderen Ansatz?
Grüsse
Marc
hi,
Irgend eine Idee wie ich alles vor dem letzten Leerzeichen wegschneide
Das kannst du mit SUBSTRING_INDEX machen.
gruß,
wahsaga
echo $begrüßung;
Erschwerend kommt noch hinzu, das es auch "Hugo Manuel von Mustermann" geben kann, sprich einfach am ersten Leerzeichen teilen ist nicht.
Irgend eine Idee wie ich alles vor dem letzten Leerzeichen wegschneide und dann danach sortiere?
Das führt bei Namen wie "Ulla Kock am Brink" auch nicht zum gewünschten Ergebnis.
Oder habt ihr einen anderen Ansatz?
Ohne menschliche Intelligenz wird diese Aufgabe nicht ohne Restfehlern lösbar sein. Vielleicht hilft eine Nachnamen-Datenbank (so es eine gibt/gäbe) die Fehlerrate bei schwierigen Fällen zu minimieren.
echo "$verabschiedung $name";
Hi,
zum Thema Datenbank-Bereinigung: Wenn sich jemand schon die Mühe macht so eine Bereinigung durchzuführung (und ich nehme ebenfalls an, dass das z.T. händisch gemacht werden muss), dann leg doch einfach eine (oder mehrere) Tabellen im sauberen Design an und setz darauf einen VIEW, der wie die alte Tabelle aussieht und heißt. Die alten Anwendungen merken nichts davon, neue Anwendungen können mit sauberen Daten arbeiten.
MfG
Rouven