Das kommt sehr oft vor, und ich kann sehen, dass es auf StackOverflow für XSLT , Ruby und Drupal , aber ich sehe es nicht speziell für SQL.
Die Frage ist also, wie sortieren Sie Titel richtig, wenn sie mit "The", "A" oder "An" beginnen?
Eine Möglichkeit besteht darin, diese Zeichenfolgen zu trimmen ():
%Vor% was war vorgeschlagen auf AskMeFi eine Weile zurück (benötigt es LOWER()
Funktion?).
Ich weiß, ich habe auch eine Art von Case / Switch-Implementierung von diesem gesehen, aber es ist ein bisschen schwer für Google.
Offensichtlich gibt es eine Reihe von möglichen Lösungen. Was gut wäre, wären SQL-Gurus, die sich auf die Performance auswirken.
Ein Ansatz, den ich gesehen habe, war, zwei Spalten zu haben - eine für die Anzeige und die andere für die Sortierung:
%Vor%Ich habe keine realen Tests durchgeführt, aber dies hat den Vorteil, dass man einen Index verwenden kann und nicht jedes Mal, wenn man nach der Beschreibung sortiert, eine String-Manipulation erfordert. Wenn Ihre Datenbank keine materialisierten Ansichten unterstützt (was MySQL nicht tut), würde die Implementierung der Logik als berechnete Spalte in einer Ansicht keinen Vorteil bringen, da Sie die berechnete Spalte nicht indizieren können.
Ich kann nur für SQL Server sprechen: Sie verwenden LTRIM innerhalb von CASE-Anweisungen. Es ist keine LOWER-Funktion erforderlich, da die Auswahl standardmäßig nicht zwischen Groß- und Kleinschreibung unterscheidet. Wenn Sie jedoch Artikel ignorieren möchten, würde ich vorschlagen, dass Sie ein Geräuschwörterbuch verwenden und einen Volltextindikationskatalog einrichten. Ich bin unsicher, ob andere Implementierungen SQL unterstützen.
Tags und Links sql mysql sorting switch-statement trim