Heim > Datenbank > MySQL-Tutorial > Wie sortiere ich alphanumerische Daten in der „ORDER BY'-Klausel von MySQL richtig?

Wie sortiere ich alphanumerische Daten in der „ORDER BY'-Klausel von MySQL richtig?

DDD
Freigeben: 2024-12-21 03:45:13
Original
255 Leute haben es durchsucht

How to Correctly Sort Alphanumeric Data in MySQL's `ORDER BY` Clause?

MySQL „Order By“ – Alphanumerische Sortierung richtig

In MySQL sortiert die „Order By“-Klausel Daten basierend auf den Werten einer angegebenen Spalte. Beim Umgang mit alphanumerischen Daten priorisiert die Standardsortiermethode jedoch die erste Ziffer, was zu einer falschen Reihenfolge führt.

Das Problem verstehen

Zum Beispiel, wenn wir die folgenden Daten haben:

1
2
3
4
5
6
7
8
9
10
11
12
Nach dem Login kopieren

Und wir führen die Abfrage aus:

select * from table order by xxxxx asc
Nach dem Login kopieren

Das Ergebnis wird sortiert als folgt:

1
10
11
12
2
3
4
5
6
7
8
9
Nach dem Login kopieren

Dies liegt daran, dass die Reihenfolge durch die erste Ziffer bestimmt wird, unabhängig von nachfolgenden Zeichen.

Lösung des Problems

Um alphanumerische Daten richtig zu sortieren, haben wir kann verschiedene Tricks anwenden:

  1. Alphanumerische Sortierung auf binäre Weise: Dabei werden die alphanumerischen Werte in Binärwerte umgewandelt und anhand der Binärwerte sortiert.
  2. Alphanumerische Sortierung mithilfe der Umwandlungsmethode: Dieser Ansatz wandelt die alphanumerischen Werte in vorzeichenbehaftete Ganzzahlen um und sortiert sie mithilfe der Ganzzahldarstellung.
  3. Natürliche Sortierung: Diese Methode sortiert die Daten basierend auf der natürlichen Reihenfolge der Werte, wobei sowohl Ziffern als auch Zeichen berücksichtigt werden.
  4. Sortieren von numerischen Werten gemischt mit alphanumerischen Werten: In diesem Fall können wir die alphanumerischen Werte in vorzeichenlose Ganzzahlen umwandeln und sie zusammen mit den numerischen Werten sortieren.

Codebeispiele

Alphanumerische Sortierung Verwenden der Bin-Methode:

SELECT 
tbl_column, 
BIN(tbl_column) AS binray_not_needed_column
FROM db_table
ORDER BY binray_not_needed_column ASC , tbl_column ASC
Nach dem Login kopieren

Natürliche Sortierung:

SELECT alphanumeric, integer
       FROM sorting_test
       ORDER BY LENGTH(alphanumeric), alphanumeric  
Nach dem Login kopieren

Sortieren numerischer Werte gemischt mit alphanumerischen Werten:

SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;
Nach dem Login kopieren

Mit diesen Tricks können wir sicherstellen, dass alphanumerische Daten sortiert werden korrekt, wobei die gewünschte Reihenfolge der Elemente beibehalten wird.

Das obige ist der detaillierte Inhalt vonWie sortiere ich alphanumerische Daten in der „ORDER BY'-Klausel von MySQL richtig?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage