Gunther: MySQL 5.0 - CONVERT() - CAST() ?

Beitrag lesen

Hi!

Ich nochmal - kriege es nicht gebacken ... .

Gemäß Handbuch gibt es da für Unicode-basierende Kodierungen nichts. Beim Abfragen nach latin1_* konvertieren und dann vergleichen ist sicher möglich, aber garantiert nicht performant. Der Zeichenverlust beim Konvertieren kommt noch hinzu, doch der ist verkraftbar, wenn du nur (Latin1-)Buchstaben enthaltende Zeichenfolgen suchst.

Nochmal kurz zur Erklärung (um Missverständnisse auszuschließen):
Ich habe bspw. in einer Tabelle meiner DB den Eintrag "Überschrift".
Diesen Eintrag möchte ich nun per Query finden.

Stelle ich Kollation der betreffenden Tabellen Spalte auf 'utf8_unicode_ci', dann findet er den Eintrag unter:

  • Überschrift
  • überschrift
  • Uberschrift
  • uberschrift

Soweit so gut. Nun möchte ich aber_zusätzlich_, falls diese Sucher erfolglos verlief, auch noch nach dem "Muster" von 'latin1_german2_ci' abfragen, damit der Eintrag auch unter

  • Ueberschrift
  • ueberschrift
    gefunden wird.

Mein Problem derzeit ist, dass soweit ich alles bisher im Netz gefundene dahingehend verstehe, dass ich meinen Vergleichsstring umwandeln kann für die Query, aber das ja nicht das, was ich brauche.
Ich bräuchte ja eine Variante, die 'on the fly' die Daten in der Tabellen Spalte umwandelt und die Kollation (für die Abfrage) ändert.

Wenn mir jemand noch mal bitte einen Tipp geben könnte, ob und wie das machbar ist, wäre ich sehr dankbar!

Andere (Alternativ-)Frage: Da diese Tabelle keine Millionen von EInträgen enthalten wird, wäre es ggf. sinnvoller, eine zweite Version davon zu erstellen (mit entsprechend anderem Zeichensatz und Kollation)?

Gruß Gunther

PS: Ach so, und falls es da gleich die nächsten Probleme mit geben sollte, oder das sonstwie von Bedeutung ist, ich verwende PHP PDO.