Thomaier: MySQL : mit regulären Ausdrücken Wörter für Buchstaben suchen

Beitrag lesen

Hallo,

»» Das Umlautproblem dürfte auf UTF8-Codierung zurückzuführen sein,
davon gehe ich auch aus.

Die MySQL-Tabelle ist mit utf8_general_ci kodiert. Ebenso alle verwendeten Scripte und Vorgänge mit UTF-8 zum schreiben in und lesen aus der Datenbank.

»» von der MySQL (oder die RE-Engine) nichts weiß. Auch wenn Du ein Zeichen 'Ö' in die DB schreibst und von dort wieder liest, sieht MySQL stattdessen zwei Zeichen 'Ö'. Die Kommunikation mit MySQL und die Speicherung in MySQL müssen einheitlich in UTF-8 oder ISO-8859-1 sein. Gemischt geht es nicht.

Das hilft bei UTF-8 (genauer bei jeder Multi-Byte-Codierung) nicht. REGEXP ist derzeit (MySQL 5.x) nicht multibyte-safe und arbeitet byteweise, nicht zeichenweise.

Ich verstehe das Problem noch nicht, was aber sicherlich an meinen mangelnden technischen Fähigkeiten liegt. Vielleicht ein praktisches Beispiel:
Ein Nutzer will "MÄHDERIN" in der Datenbank finden und gibt "mhderin" mit einem Joker ein. Ich habe jetzt mal mit dem konkreten Beispiel experimentiert und
SELECT ID, word, points FROM word2 WHERE word REGEXP BINARY '^M[Ä]{1}[HDERIN]{0,7}$' ORDER BY word
findet es NICHT,
dagegen findet
SELECT ID, word, points FROM word2 WHERE word REGEXP BINARY '^MÄ[HDERIN]{0,7}$' ORDER BY word
das Wort und auch andere. Wo ist da der Unterschied in Bezug auf den Umlaut "Ä"?

Vielen Dank für jeden Hinweis.
MfG
Thomas