phpbar.de logo

Mailinglisten-Archive

mysql sortiert umlaute falsch

mysql sortiert umlaute falsch

Peter Holm mysql_(at)_lists.phpcenter.de
Thu, 14 Jun 2001 16:51:55 +0200


Hi Oliver Six!

>>>character-set=german1 und siehe da: Ä, Ö und Ü werden brav bei A, O und U einsortiert.
>>
>>Leider nicht, die Umlautsortierung ist auch bei der Wahl des
>>Zeichensatzes german1 nicht korrekt.
>>
>kann ich nicht nachvollziehen: bei mir funktioniert das 1a (OK, außer mit MyODBC, der will die Sprachtabelle 

Die Umlaute werden auch brav einsortiert bei den Entsprechenden
Buchstaben, aber leider nicht an der richtigen Position. Das mag zwar
auf den ersten Blick etwas kleinlich wirken, aber bei langen Wort- oder
Namenslisten ist das schon wichtig. 

So ergibt ein select * from umlaut order by wort (Tabellendaten unten):

 1   ä     
 7   ad    
 4   ae    
 8   af    
 2   ö     
 9   od    
 5   oe    
10   of    
 3   ü     
11   ud    
 6   ue 
12   uf  

Korrekt wäre aber:

 7   ad    
 4   ae    
 1   ä     
 8   af    
 9   od    
 5   oe    
 2   ö     
10   of    
11   ud    
 6   ue 
 3   ü     
12   uf  

weil Umlaute beim Sortieren analog zu ae, oe, ue behandelt werden.
[wobei ich hier bei der positionierung von ö nach oe etc. nicht sicher
bin, aber soooo kleinlich bin ich dann auch wieder nicht...]


Hier zum Rumspielen:

CREATE TABLE umlaut (
   id int(10) unsigned NOT NULL auto_increment,
   wort varchar(100) NOT NULL,
   wort2 varchar(100) NOT NULL,
   PRIMARY KEY (id),
   UNIQUE wort (wort, wort2)
);

#
# Dumping data for table 'umlaut'
#

INSERT INTO umlaut VALUES ( '1', 'ä', '');
INSERT INTO umlaut VALUES ( '2', 'ö', '');
INSERT INTO umlaut VALUES ( '3', 'ü', '');
INSERT INTO umlaut VALUES ( '4', 'ae', '');
INSERT INTO umlaut VALUES ( '5', 'oe', '');
INSERT INTO umlaut VALUES ( '6', 'ue', '');
INSERT INTO umlaut VALUES ( '7', 'ad', '');
INSERT INTO umlaut VALUES ( '8', 'af', '');
INSERT INTO umlaut VALUES ( '9', 'od', '');
INSERT INTO umlaut VALUES ( '10', 'of', '');
INSERT INTO umlaut VALUES ( '11', 'ud', '');
INSERT INTO umlaut VALUES ( '12', 'uf', '');









Have a nice thread,
Peter

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



php::bar PHP Wiki   -   Listenarchive