Linuchs: Datenbank-Suche mit nicht-ASCII Zeichen (Kollation?)

Beitrag lesen

Moin,

für die Anzeige einer DB-Tabelle mit z.Z. knapp 1200 Einträgen kann ein Filter für Lied-Titel gesetzt werden, also zunächst mal ein Wort (später mehrere Worte) als Suchbegriff.

...
WHERE titel LIKE '%schön%'

In den gefundenen Titeln markiere ich den Suchbegriff schön schön rot und kursiv:

schön

Weniger schön ist, dass auch schön ohne Umlaut gefunden wird, was natürlich per PHP nicht markiert werden kann (weil PHP unterscheidet).

Habe recherchiert zu Datenbanksuche mit Umlaut, bin aber aus den Ergebnissen nicht schlau geworden. Und genaugenommen will ich das auch gar nicht auf Umlaute begrenzen, sondern auf alle Abarten von ASCII-Zeichen, die in europäischen Sprachen vorkommen (zunächst lateinische Schrift, griechisch, kyrillisch haben wir noch nicht) wie

å è ç ñ ...

Dann kommt noch das Problem dazu, dass schön in der DB und/oder per Suchbegriff auch schoen geschrieben werden kann. Etwa auf nicht-deutschen Tastaturen.

Da dachte ich mir, dass man checkboxen kann ö = oe / é = e / ...

Ich habe noch ein altes Lexikon. Da steht etwa: „Was unter C vermisst wird, siehe unter K und Z“. Entsprechend könnte ich formulieren: was unter ö vermisst wird, siehe unter oe und ø

Ob das Sinn macht oder eher verwirrt, muss ich später entscheiden, erstmal das Handwerk lernen.

Im Hinterkopf habe ich, dass man dem LIKE sowas hinzufügen wie utf8_unicode_ci - finde das aber nicht in der LIKE Dokumentation. Wenn ich ein DB-Feld einrichte, kann ich unter Kollation dutzende solcher Einträge wählen. Aber keine Ahnung, was sie bewirken.

Gruß, Linuchs

Edit: Habe was gefunden:

AND       titel LIKE '%schön%' COLLATE 'utf8_bin'

Nun kommt schon nicht mehr vor, aber Schön auch nicht.