Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine natürliche Sortierung gemischter alphabetischer und numerischer Zeichenfolgen in PostgreSQL durchführen?

Wie kann ich eine natürliche Sortierung gemischter alphabetischer und numerischer Zeichenfolgen in PostgreSQL durchführen?

Linda Hamilton
Freigeben: 2025-01-08 00:52:40
Original
144 Leute haben es durchsucht

How Can I Perform Natural Sorting of Mixed Alphabetic and Numeric Strings in PostgreSQL?

Natürliche Sortierung gemischter alphanumerischer PostgreSQL-Zeichenfolgen

Eine inhärente Herausforderung beim natürlichen Sortieren gemischter alphanumerischer Zeichenfolgen besteht darin, die Reihenfolge der Wörter beizubehalten und gleichzeitig die Zahlen als Ganzzahlen zu behandeln. In PostgreSQL 9.1 und höher gibt es eine praktische Methode:

Zusammengesetzte Typen und Array-Operationen:

  1. Erstellen Sie einen zusammengesetzten Typ namens „ai“, der ein Textfeld „a“ und ein Ganzzahlfeld „i“ enthält.
  2. Teilen Sie jede Zeichenfolge mit der Funktion „regexp_matches“ in ein Array von „ai“-Werten auf.

Beispielabfrage (PostgreSQL 9.4 und höher):

<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>
Nach dem Login kopieren

So gehen Sie mit PostgreSQL 9.1 um:

In älteren Versionen von PostgreSQL muss die Abfrage leicht geändert werden:

<code class="language-sql">SELECT data
FROM (
    SELECT ctid, data, regexp_matches(data, '(\D*)(\d*)', 'g') AS x
    FROM alnum
    ) x
GROUP BY ctid, data   -- ctid作为缺少主键的占位符
ORDER BY regexp_replace (left(data, 1), '[0-9]', '0')
        , array_agg(ROW(x[1], CASE x[2] WHEN '' THEN '0' ELSE x[2] END)::ai)
        , data;</code>
Nach dem Login kopieren

Mit diesem Ansatz werden String-Splitting und natürliche Sortierung in PostgreSQL möglich und ermöglichen eine intuitive Sortierung verschiedener Datensätze, die gemischte alphanumerische Strings enthalten.

Das obige ist der detaillierte Inhalt vonWie kann ich eine natürliche Sortierung gemischter alphabetischer und numerischer Zeichenfolgen in PostgreSQL durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage