Mysql Umlautsuche

MarkusH

Aktives Mitglied
Hallo,

in einer UTF8 codierten Datenbank (MySQL) liegen die Umlaute korrekt codiert im Klartext vor. Wenn ich jetzt nach "Mull" suche, werden mir leider auch Ergebnisse mit "Müll" angezeigt, was nicht so ganz im Sinne meiner Suche ist :-D

Mir sind die COLLATE und CONVERT-Funktionen zwar bekannt, aber leider stehe ich doch mit Ihnen etwas auf Kriegsfuß.

Wie müßte meine Query aussehen, damit ich bei der Suche nach "Mull" keinen "Müll" finde und umgekehrt?

So siehts im Moment aus:
"SELECT * FROM `data_mitarbeiter_auskunft`WHERE `nachname` LIKE '%Mull%'"

Grüße
 
Kleines MS-SqlServer-Beispiel:

CODE 1> Create Table myText (id int Identity(1, 1) Primary Key, Text1 nvarchar(50) Collate Latin1_General_BIN, Text2 nvarchar(50) Collate Latin1_General_CI_AI)
2> go
1> Insert Into myText(Text1, Text2) Values ('Müll', 'Müll')
2> go

(1 Zeilen betroffen)
1> select * From myText Where Text1 = 'Mull'
2> go
id Text1 Text2

----------- -------------------------------------------------- -----------------
---------------------------------

(0 Zeilen betroffen)
1> select * From myText Where Text2 = 'Mull'
2> go
id Text1 Text2

----------- -------------------------------------------------- -----------------
---------------------------------
1 Müll Müll


(1 Zeilen betroffen)
1>


Analog müßte das in mySql gehen.

Sprich: Es hängt von der Sortierung ab.
Latin1_General_BIN vergleicht binär -> 'u' != 'ü'.
Latin1_General_CI_AI vergleicht ohne Berücksichtigung Groß/Klein, Akzent: 'u' = 'ü'

Bei Abfragen kann man die Spalte über die Collate - Klausel temporär mit einer anderen Sortierung ansprechen:


CODE Where Text1 = 'Mull' Collate Latin1_General_CI_AI



Details vergesse ich aber auch immer, da muß man in der entsprechenden Doku nachgucken, wobei die von Microsoft auch für andere Db-Systeme gelten dürfte (weil die Sortierungsnamen international genormt sind).

Es gibt dann auch noch die 'German_Phonebook' - Sortierung, da gibt es nochmals Unterschiede, ob äöü nach aou oder alle nach z kommen.
 
Danke SQL-Gott. utf8_general_ci-Feld hab ich mit 'COLLATE utf8_bin' umcodiert. Klappt *thumbup*

Grüße und danke nochmal
 
Zurück
Oben