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:
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>
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>
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!