Heim >Datenbank >MySQL-Tutorial >Wie kann PostgreSQL gemischte Wort- und Zahlenzeichenfolgen in einer benutzerfreundlichen Reihenfolge sortieren?
Menschenfreundliche PostgreSQL-Sortierung gemischter alphanumerischer Zeichenfolgen
Das humane Sortieren gemischter alphanumerischer Zeichenfolgen in PostgreSQL ist eine einzigartige Herausforderung. Eine ideale Sortierreihenfolge würde Zahlen Vorrang vor Buchstaben geben und „3“ vor „20“ und „fred“ nach „10bob“ setzen.
Teilen Sie die Zeichenfolge in Zahlen- und Zeichenfolgenkomponenten auf
Eine Möglichkeit besteht darin, jede Zeichenfolge an alphanumerischen Grenzen in Abschnitte aufzuteilen. Beispielsweise würde „AAA2fred“ zu („AAA“, 2, „fred“). Diese Trennung ermöglicht eine separate Sortierung nach Datentyp, wobei die normalen Sortierregeln für alphabetische Blöcke verwendet und numerische Blöcke als Ganzzahlen behandelt werden.
Mit der Funktion regexp_matches()
und dem Modus '(D*)(d*)'
mit der Option 'g'
können wir diese Komponenten jeder Zeichenfolge extrahieren und mit array_agg()
ein Array ai
(eine Kombination aus Text- und Ganzzahlfeldern) erstellen Typ).
Sortieren Sie die geteilten Daten
Nachdem wir die Zeichenfolge aufgeteilt und in ein Array zusammengesetzter Typen konvertiert haben, können wir diese Arrays zum Sortieren verwenden. Die ORDER BY
-Klausel nutzt dieses Array, um sicherzustellen, dass die Buchstabenblöcke ihre ursprüngliche Reihenfolge innerhalb der Zahlenblöcke beibehalten.
Komplettlösung
Durch die Kombination der Schritte zum Aufteilen und Sortieren von Zeichenfolgen können wir die gewünschte menschenähnliche Sortierung mithilfe der folgenden Abfrage erreichen:
<code class="language-sql">SELECT data FROM alnum ORDER BY ARRAY(SELECT ROW(x[1], CASE x[2] WHEN '' THEN '0' ELSE x[2] END)::ai FROM regexp_matches(data, '(\D*)(\d*)', 'g') x) , data;</code>
Diese Lösung eignet sich gut für beliebige Daten mit einer unterschiedlichen Anzahl von Elementen in jeder Zeichenfolge und bietet einen flexiblen Ansatz, der an Ihre spezifischen Sortieranforderungen angepasst werden kann.
Das obige ist der detaillierte Inhalt vonWie kann PostgreSQL gemischte Wort- und Zahlenzeichenfolgen in einer benutzerfreundlichen Reihenfolge sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!