


Wie kann PostgreSQL gemischte Wort- und Zahlenzeichenfolgen in einer benutzerfreundlichen Reihenfolge sortieren?
Jan 07, 2025 pm 10:55 PMMenschenfreundliche 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:
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;
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?

So lösen Sie das Problem der MySQL können die gemeinsame Bibliothek nicht öffnen

Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin)

Ausführen mehrerer MySQL-Versionen auf macOS: Eine Schritt-für-Schritt-Anleitung

Wie sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)?

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?
