Ich möchte eine zusätzliche Spalte in einer Tabelle als 'Sortierwert' speichern, was eine numerische Darstellung der Titelspalte ist , so dass die Reihenfolge solcher Werte die natürliche alphabetische Sortierreihenfolge der Zeichenfolge darstellt. Das heißt, dass ich nach dem Sortierwert sortierte Zeilen abrufen kann und sie in natürlicher Sortierreihenfolge vorliegen. Wenn ich eine neue Zeile einfüge, kann ich den numerischen Wert generieren und wissen, dass der Wert relativ zu anderen die Position der Zeichenfolge darstellt in einer alphabetischen Suche, genau auf die ersten X Buchstaben oder so.Erhalten numerischer/normalisierter Darstellung von Strings zur Unterstützung der 'natürlichen Sortierung' von Titeln in DB
Ein paar Gründe dafür: Erstens möchte ich eine natürlichere Bestellung als eine einfache Bestellung von einem DB-Server angeboten, wo Dinge wie "The" und "A" und Interpunktion am Anfang ignoriert werden, und Zahlen werden "natürlich" behandelt.
Zweitens ist dies für einen Index mit einer Vielzahl von Permutationen - es spart Platz und vielleicht Zeit beim Durchlaufen eines Index mit vielen Zeilen.
Was ich danach bin, ist der Algorithmus, um die Zeichenkette auf diesen numerischen Wert zu übersetzen, oder einfach, ich nehme an, ein normalisierter Zeichenkettenwert.
Ich benutze PHP und MySQL.
Ich fürchte, dass "alles aus der DB ziehen und in PHP mit natcasesort() sortieren" ist keine Lösung für diese besondere Situation, wie ich Zeilen (mit Reihenfolge von und Gruppe von) in abrufen möchte sortierte Reihenfolge, bevor sie zu einer Join- oder Limit-Klausel gelangen. Vielen Dank.
Edit:
Danke für Antworten so weit. Mir ist gerade eingefallen, dass die Tatsache, dass meine Anwendung UTF-8 verwendet, ziemlich relevant ist. Ich denke, dass es praktisch ist, den Anfangsteil einer Zeichenkette in gepackter/numerischer Form darzustellen, vielleicht nur eine Art normalisierter Form (alles fallgefüllt, Zahlen null gepolstert und so viele Zeichen wie möglich) normalisiert auf ihre Wurzel dh ã zu a) wäre angemessen.
Ich bin mir nicht sicher, ob ich vollständig verstehe - wenn Sie von einer Zeichenfolge in eine Zahl übersetzen, werden Sie einige der Charaktere loswerden? –