3 messages in com.mysql.lists.mysql-deRe: SQL-Ergebnis entspricht nicht Abf...| From | Sent On | Attachments |
|---|---|---|
| Michael Diederich | 15 Oct 2007 01:59 | |
| Susanne Ebrecht | 15 Oct 2007 02:10 | |
| Michael Diederich | 15 Oct 2007 03:37 |
| Subject: | Re: SQL-Ergebnis entspricht nicht Abfrage![]() |
|---|---|
| From: | Susanne Ebrecht (susa...@mysql.com) |
| Date: | 10/15/2007 02:10:44 AM |
| List: | com.mysql.lists.mysql-de |
Hallo Michael,
es entspricht leider einer deutschen Norm, dass ein ü einem u gleichgesetzt wird.
http://de.wikipedia.org/wiki/Alphabetische_Sortierung
Hinzu kommt, dass es für eine generelle utf-8 Sortierung noch spezielle Regeln gibt, da hier alle Sprachen Berücksichtigung finden sollten. Eine dieser Regeln besagt, dass jedem Umlaut (oder in anderen Sprachen anderen Buchstaben) nur genau ein Buchstabe des Alphabetes zugeordnet werden soll.
Daher wurde bei der Implementierung des utf8_unicode_ci für die deutsche Sprache die DIN 5007 Variante 1 verwendet.
Dass Du, wenn Du explizit nach ä, ö oder ü suchst, auch alle a, o bzw. u bekommst, ist daher nicht falsch, sondern schlicht und einfach eine gültige Regel der deutschen Sprachen.
Abhilfe schafft hier derzeit lediglich die Verwendung von Latin1 mit der latin1_german2_ci.
Wir suchen jedoch noch freiwillige, die eine deutsche utf8-Sortierung nach DIN 5007 Variante 2 basteln.
Viele Grüße
Susanne
Michael Diederich wrote:
Hallo,
ich weiß, es ist Montag und noch recht früh :) aber habe noch zu viele Bäume im Wald..
SQL-Abfrage:
select file from ressource where file like '%ü%'
Ergebnis:
"/upload/pdf_symbol.gif" .. "/upload/logo_steyr.jpg" "/upload/logo_aumayr.jpg" "/upload/logo_mayr.jpg" "/upload/logo_panny_gaenserndorf.jpg" "/upload/logo_ransmayr.jpg" "/upload/install_flash_player_9_active_x.msi" "/upload/logo_allemeyer.jpg" "/upload/logo_krumay.jpg" ..
Ja, es tauchen auch welche mit ü auf. Aber wenn ich die Abfrage auf %ä% oder %ö% oder %ß% mache, ist die Ergebnismenge korrekt.
Hier das SQL-Statement, mit dem die Tabelle erzeugt wurde:
Table Create Table --------- --------------------------------------------- ressource CREATE TABLE `ressource` ( `res_id` varchar(36) NOT NULL, `name` varchar(100) default NULL, `rub_id` varchar(36) default NULL, `rtp_id` varchar(36) default NULL, `titel` varchar(255) default NULL, `file` varchar(128) default NULL, `link` varchar(255) default NULL, `stichworte` varchar(255) default NULL, PRIMARY KEY (`res_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1
Ich vermute, ich müsste irgendwas casten, um bei Umlauten auf der sicheren Seite zu sein?
Vielen Dank,
Michael
-- MySQL GmbH Dipl.-Inf. Susanne Ebrecht, Software Developer 52066 Aachen, Germany
Hauptsitz: MySQL GmbH, Stiglmaierplatz/Dachauer Str.37, 80335 München, Germany Geschäftsführer: Kaj Arnö, HRB München 162140




