Andere Sprachen - Andere Buchstaben

deinertsche

Erfahrenes Mitglied
Hallo!

Ich verwende php/mysql mit utf8-Kodierung.

Nun habe ich eine Tabelle mit Spalten, in denen Begriffe aus verschiedenen Sprachen gespeichert werden. Also z.B. Spalten: string_fr, string_tk, string_pl für französische, türkische und polnische Begriffe.

Das Problem besteht nun darin, dass es in diesen Sprachen andere Buchstaben gibt, was für die Speicherung dank utf8 erstmal eigentlich kein Problem ist.

Aber wenn ich dann eine Suche per SELECT mache, dann findet er nur diejenigen, die exakt so geschrieben sind aber nicht diejenigen, die so ähnlich sind, also ein sonderzeichen drin haben.

Beispiel:
in der Datenbank befindet sich ein String namens éèê
Wenn ich nun nach eee suche, dann liefert mysql ein leeres Resultat.
Ich möchte aber dass ein e mit einem Strich drüber genauso gefunden wird wie ein normales e.

Wie würdet ihr dieses Problemlösen?

Danke!
Deinertsche
 
Hast du schon mal einen „LIKE“-Vergleich probiert, etwa:
Code:
SELECT
        "éèê" LIKE "eee"
 
Ich kenne LIKE nur in der Form:
"SELECT * FROM mytable WHERE myrow LIKE '%mysearch%"'

Wie ist denn die Syntax von einem LIKE-Vergleich wie Du ihn meintest? Hab bei http://dev.mysql.com/doc/refman/5.1/de/string-comparison-functions.html geschaut aber es nicht so recht verstanden.

Also mein suchstring ist z.B. eee und in der spalte myrow gibt es einen Eintrag namens 'éèê', der allerdings utf8-kodiert ist, also 'éèê'.

Vielen Dank!
Deinertsche
 
Du hattest Recht. Vielen Dank! Aber mein ursprüngliches Problem hab ich noch nicht ganz gelöst weil ich nicht weiss wie die Syntax von dem LIKE-Vergleich ist, den Du meintest.

"SELECT * FROM mytable WHERE myrow LIKE '%eee%"'
findet leider nicht den Eintrag éèê in der Spalte myrow.
 
Hast du mal mein Beispiel direkt ausprobiert? Denn diese Abfrage liefert einen booleschen Wert („0“ oder „1“) je nach Erfolg zurück.
 
Ja, habe ich ausprobiert. Es liefert immer eine 0 zurück. (obwohl es eine Spalte gibt, die éèê enthält und die Tabelle jetzt auch utf8 kodiert ist)

Aber selbst wenn es mir eine 1 zurückliefern würde, dann wüsste ich noch nicht, wie die Syntax ist, die mir die korrekte Zeile liefert.

Sorry, dass ich so schwierig bin :)
 
Zurück