MySQL und die Suche nach Umlauten

Verfasst am: 24. 06. 2010 [17:03]
UFOMelkor
Dabei seit: 20.10.2009
Themenersteller

348 Beiträge
Beitrag hilfreich?

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'


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?

 
Verfasst am: 24. 06. 2010 [20:15]
Matthes
Dabei seit: 08.05.2010

174 Beiträge
Beitrag hilfreich?

Spricht was gegen die Umstellung der Kollation auf utf8_bin? Dann sollte es stimmen...

Mal: "May have been the losing side. Still not convinced it was the wrong one."
 
Verfasst am: 24. 06. 2010 [21:22]
UFOMelkor
Dabei seit: 20.10.2009
Themenersteller

348 Beiträge
Beitrag hilfreich?

Das fehlende ci wink.gif

Ich befürchte fast, ich suche die eierlegende Wollmichsau -.-

 
Verfasst am: 24. 06. 2010 [21:27]
lwulfe
Dabei seit: 02.10.2009

807 Beiträge
Beitrag hilfreich?

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 ...

 
Verfasst am: 24. 06. 2010 [21:45]
UFOMelkor
Dabei seit: 20.10.2009
Themenersteller

348 Beiträge
Beitrag hilfreich?

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 wink.gif

Dank euch beiden trotzdem für eure Bemühungen icon_smile.gif

 
Verfasst am: 24. 06. 2010 [21:53]
joerg
Dabei seit: 09.06.2009

1540 Beiträge
Beitrag hilfreich?

Hallo Oskar

Ich rate jetzt mal das deine MySql möglicherweise Iso formatiert ist und die Kollation alleine nicht ausreicht.

Da könnte ein mysql_set_charset('utf8'); oder mysql_query("SET NAMES 'utf8'"); unter Umständen om Skript hilfreich sein.

Gruß
Jörg


 
Verfasst am: 24. 06. 2010 [22:11]
UFOMelkor
Dabei seit: 20.10.2009
Themenersteller

348 Beiträge
Beitrag hilfreich?

Der Zeichensatz wird direkt nach der Verbindung mittels "SET NAMES 'utf8'" umgestellt.

 
Verfasst am: 24. 06. 2010 [23:32]
Raptor
Dabei seit: 10.05.2009

1159 Beiträge
Beitrag hilfreich?

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')
Kollation: utf8_bin

 




Du bist nicht eingeloggt. Bitte beachte, dass Du eingeloggt sein musst, um Themen zu erstellen oder auf Beiträge zu antworten.

RSS Feed abonnieren

Werde in Echtzeit über neue Foren-Beiträge informiert:



8 Mitglieder waren innerhalb der letzten 15 Minuten online (52 heute gesamt):
alphamerisch, Boxerworld, Deep_Thought, ElkeTrautmann, eschlbeck, klarsteb, Ostseebrise, tanka1

Administratoren und Moderatoren:
[keine]

Seitenreport hat 18153 registrierte Mitglieder, 3003 Themen und 29112 Beiträge.
Der aktuelle Mitgliederzuwachs liegt bei durchschnittlich 12 bestätigten Neuregistrierungen pro Tag.
Pro Tag werden im Seitenreport Forum durchschnittlich 1 neues Thema und 7 Beiträge erstellt.
Die Durchschnittszahlen berechnen sich aus den letzten 7 Tagen.

Mehrfach empfohlen

Seitenreport ist einer der bekanntesten SEO und Website Analyse Dienste im deutschsprachigen Raum und wurde u.a. schon empfohlen:
von Mr. Wong im Wong Letter
vom Leserservice der Deutschen Post
vom Technik Blog SiN
und vielen anderen

Partnerprogramm

12% Lifetime Provision auf alle Buchungen von Dir geworbener Mitglieder sowie 0,50 € für jede Registrierung. Eines der besten deutschen Partnerprogramme laut den appCharts von 100partnerprogramme.de. Nimm jetzt teil am Seitenreport Partnerprogramm und verdiene gutes Geld dabei!

* = Partnerlinks