UFOMelkor
Themenersteller
Student
Content Meister (350 Beiträge)
MySQL und die Suche nach Umlauten
Hallo zusammen,
ich habe ein Problem mit MySQL und ich fürchte fast, es gibt keine saubere Lösung dafür. Aber seht selbst:
Ich habe ein VARCHAR-Feld mit dem namen voc_text. Die Kollation des Feldes ist utf8_unicode_ci. In der Spalte befinden sich mehrere Einträge, unter Anderem iacÄ“re und iăcÄ•re. Nun führe ich folgende Query aus:
[SQL]
SELECT voc_text
FROM `voc_vocables`
WHERE `vocable_text` LIKE 'iăcĕre'
[/SQL]
Zurückgegeben werden mir beide Einträge, gleiches Ergebnis wenn ich mit = statt LIKE arbeite. Ich hab schon ein wenig gegoogelt und wurde diese funktionsweise für SQL festgelegt.
Kennt vielleicht jemand eine Möglichkeit, um dieses Problem drumherum zu kommen, ohne die Selektierung in PHP vorzunehmen?
Naturkosmetik in Bochum
Steppenhahn Ultramarathon-Community
matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
Spricht was gegen die Umstellung der Kollation auf utf8_bin? Dann sollte es stimmen...
Make Seitenreport great again!
UFOMelkor
Student
Content Meister (350 Beiträge)
lwulfe
Consultant
Content Halbgott (743 Beiträge)
Hallo Oskar,
ginge es vielleicht mit Wildcards?
SELECT voc_text
FROM `voc_vocables`
WHERE `vocable_text` LIKE \'i?c?re\'
Aber wirklich empfehlen würde ich dir bei dem Problem ein MySQL-Forum ...
UFOMelkor
Student
Content Meister (350 Beiträge)
Liefert komischerweise gar kein Ergebnis o_O
Nunja, ich denke ich werde erstmal beim Selektieren mit PHP bleiben.
Für größere Tests ist dann Zeit, wenn die Semesterferien (endlich) beginnen
Dank euch beiden trotzdem für eure Bemühungen
Naturkosmetik in Bochum
Steppenhahn Ultramarathon-Community
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
UFOMelkor
Student
Content Meister (350 Beiträge)
Raptor
IT-Student
Content Gott (1013 Beiträge)
Das Problem ist die Verarbeitung von Umlauten und Sonderzeichen durch MySQL.
utf8_bin verwandelt ein Ä nicht in ein A, aber auf die Grosskleinschreibung kommt es drauf an.
utf8_unicode_ci macht genau das Gegenteil, ist also auch nicht gewünscht.
utf8_bin_ci wäre also das gesuchte, aber das gibt es nicht.
Allerdings lässt sich das wie folgt simulieren:
[sql]
SELECT voc_text
FROM `voc_vocables`
WHERE LOWER(\'vocable_text\') = LOWER(\'iăcĕre\')
[/sql]Kollation: utf8_bin
Meine Developer-Website mit den Web-Entwickler-Tools.
Meine Web-Entwicklungs-Dienstleistungen
[url="http://www.seitenreport.de/forum/beitraege/seitenreport_verlosungen/wichtig_neue_regel
Das Seitenreport Forum hat aktuell 5276 Themen und 36111 Beiträge.
Insgesamt sind 48364 Mitglieder registriert.
Beitrag erstellen
EinloggenKostenlos registrieren