Ich habe eine Liste von Filmen, die ich nach Buchstaben gruppiert habe. Natürlich haben die Filme, die mit dem Buchstaben "T" beginnen, ungefähr 80% der Filme, die mit "The" beginnen. Filme wie "The Dark Knight" sollten in der "D" -Liste und vorzugsweise auch im "T" erscheinen. Kann ich das irgendwie machen?
Ich verwende den folgenden Code in der WHERE-Klausel, um Filme anzuzeigen, die mit einem bestimmten Buchstaben beginnen und "das" ignorieren, aber dies hatte auch einen praktischen Nebeneffekt, dass ein Film wie "The Dark Knight" für den Buchstaben erscheint. D "und" T ".
%Vor%Ich möchte das erreichen, wenn ich alle Filme in der Datenbank ausspreche.
Wenn Sie diese Abfrage häufig ausführen möchten, sollten Sie in der Tabelle ein separates Feld mit dem Namen "Sortiert" erstellen. Die Verwendung von regulären Ausdrücken oder anderen Operationen macht es für MySQL unmöglich, den Index zu nutzen.
Also ist die einfachste und effizienteste Lösung, dass Sie ein movie_title_short
-Feld hinzufügen, das movie_title
ohne "The" oder "A" enthält. Achten Sie darauf, dem Feld movie_title_short
auch einen Index hinzuzufügen!
Wie Carl sagte, würde ich dies in ein eigenes indizierbares Feld einbauen, um zu vermeiden, es jedes Mal berechnen zu müssen. Ich würde empfehlen, es auf eine etwas andere Weise zu tun, um Redundanz zu vermeiden.
%Vor%zB:
%Vor% Auf diese Weise können Sie diese Filme auf zwei verschiedene Arten anzeigen: "name, namePrefix"
oder "namePrefix name"
und können entsprechend sortiert werden.
Ich hatte gerade dieses Problem selbst ... Lösung ist:
%Vor%Dies gibt Ihnen nur Ergebnisse, die mit "The D" oder "D"
beginnen