phpbar.de logo

Mailinglisten-Archive

mysql sortiert umlaute falsch

mysql sortiert umlaute falsch

Alexander Skwar mysql_(at)_lists.phpcenter.de
Wed, 13 Jun 2001 19:38:37 +0200


So sprach Thomas Bach am Wed, Jun 13, 2001 at 10:41:37AM +0200:
> hmmm, wäre es dann aber nicht besser, die umlaute durch a, o resp. u zu 
> ersetzen (anstelle ae, oe & ue), dann würde nämlich gerade korrekt sortiert 

Und wie geht's dann wieder zurück?  Mal davon abgesehen, das dann nicht
korrekt sortiert würde - gut, nicht mehr so katatrophal wie es jetzt ist,
aber immer noch nicht richtig (richtig: Wie's im Telefonbuch steht)  Also
so:

1. Müller
1. Mueller
3. Muller

Bei Dir käme raus:

1. Mueller
2. Müller
2. Muller

Oder noch "schlimmer":

1. Müller
1. Mueller
2. Müllez
3. Muller

vs. Deines:

1. Muller
1. Müller
2. Müllez
3. Mueller

(Das {1,2,3}. gehört natürlich nicht zum String)

Im Telefonbuch wird nämlich nicht zwischen ü und ue unterschieden.  Dh. es
findet *für die Sortierung* eine Auflösung von ü nach ue statt.

Kann man in MySQL replace() bei ORDER BY anwenden?  Dann dürfte wohl richtig
sein:

SELECT Namen 
 FROM Tbl 
 ORDER BY 
  replace(replace(replace(replace(replace(replace(replace(
    Namen, 'ß', 'sz'), 
           'ü', 'ue'), 
           'ö', 'oe'), 
           'ä', 'ae'), 
           'Ü', 'Ue'), 
           'Ö', 'Oe'), 
           'Ä', 'Ae')


Also, 7 ineinander geschachtelte REPLACE's - für jeden Buchstaben ein
Replace.  Nicht elegant und wohl auch nicht performant, aber was anderes
fällt mir nicht ein, wenn man in MySQL bleiben will...

Alexander Skwar
-- 
How to quote:	http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:	http://www.digitalprojects.com   |   http://www.iso-top.de
   iso-top.de - Die günstige Art an Linux Distributionen zu kommen
		Uptime: 20 hours 37 minutes

---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive