Ich habe eine Mitglieder-Suchfunktion, wo Sie Teile von Namen geben können und die Rückkehr sollte alle Mitglieder mit mindestens einem der Benutzernamen, Vornamen oder Nachnamen mit dieser Eingabe übereinstimmen. Das Problem hier ist, dass einige Namen "komische" Zeichen wie die é
in Renée
haben und der Benutzer nicht das seltsame Zeichen, aber den normalen ASCII-Ersatz e
eingeben möchte.Wie konvertiere ich eine Spalte im laufenden Betrieb ohne Speichern, um nach Übereinstimmungen mit einer externen ASCII-Zeichenkette zu suchen?
In PHP konvertiere ich den Eingabe-String mit iconv in ASCII (nur für den Fall, dass jemand seltsame Zeichen eingibt). In der Datenbank sollte ich jedoch auch die seltsamen Zeichen in ASCII umwandeln (offensichtlich), damit die Zeichenfolgen übereinstimmen.
Ich habe versucht, die folgenden:
SELECT
CONVERT(_latin1'Renée' USING ascii) t1,
CAST(_latin1'Renée' AS CHAR CHARACTER SET ASCII) t2;
(Das sind zwei Versuche.) Beide funktionieren nicht. Beide haben Ren?e
als Ausgabe. Das Fragezeichen sollte ein e
sein. Es ist in Ordnung, wenn es Ren?ee
ausgibt, da ich alle Fragezeichen nach der Konvertierung nur entfernen kann.
Wie Sie sich vorstellen können, sind die Spalten, die ich abfragen möchte, Latin1 codiert.
Danke.
Ist das auf andere Weise möglich? Zu viel Freiheit ist in Ordnung, ich filtere die Ergebnisse nur mit PHP nach dem Filter in MySQL. Z.B. Ich bin gut darin, "Renee", "Renée" und "Renae" und "Renõe" als MySQL-Ergebnisse zu bekommen, wenn ich "Renee" eingib. Sowieso?? – Rudie
Der beste Weg wäre, die Spiele zu speichern. Die Konvertierung im laufenden Betrieb ist für große Datenmengen extrem langsam, da sie nicht index-intelligent ist. – Pacerier