Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie sortiere ich String-Spalten mit Zahlen in aufsteigender Reihenfolge in MySQL?

Mary-Kate Olsen
Freigeben: 2024-10-27 16:07:29
Original
540 Leute haben es durchsucht

How to Sort String Columns Containing Numbers in Ascending Order in MySQL?

Sortieren von Zeichenfolgenspalten mit Zahlen in SQL

Beim Sortieren von Zeichenfolgenspalten, die Zahlen enthalten, platziert der standardmäßige MySQL-Sortieralgorithmus Zahlen nach Buchstaben. Dies ist nicht immer das gewünschte Verhalten.

Problem:

Sortieren Sie die folgende Zeichenfolgenspalte mit Zahlen in aufsteigender Reihenfolge:

name
a 1
a 12
a 2
a 3

Das erwartete Ergebnis ist:

name
a 1
a 2
a 3
a 12

Lösung mit SQL:

Angenommen, das Spaltenmuster ist immer „WORD space NUMBER“, kann die folgende SQL-Abfrage verwendet werden:

<code class="sql">SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column, LOCATE(' ', column) + 1) AS SIGNED);</code>
Nach dem Login kopieren
  • CAST(): Wandelt den Teilstring (Zahl) in einen numerischen Wert um.
  • LOCATE('', Spalte): Findet die Position des Leerzeichens.
  • SUBSTRING(): Extrahiert den Teilstring, der die Zahl enthält.

Alternativ mit SUBSTRING_INDEX:

<code class="sql">ORDER BY SUBSTRING_INDEX(column, " ", 1) ASC, CAST(SUBSTRING_INDEX(column, " ", -1) AS SIGNED);</code>
Nach dem Login kopieren

Diese Abfrage verwendet SUBSTRING_INDEX, um die Wort- und Zahlenteile der Zeichenfolge separat zu extrahieren und entsprechend zu sortieren.

Erklärung:

Diese Lösung basiert auf der Tatsache, dass die Teilzeichenfolge nach dem Leerzeichen in der Zeichenfolge immer die Zahl enthält. Durch Konvertieren dieser Teilzeichenfolge in einen numerischen Wert können wir die Spalte numerisch sortieren und dabei das Buchstabenpräfix ignorieren.

Hinweis:

Wenn die Zeichenfolgenspalte nicht auf das „ Wenn Sie das Muster „WORD space NUMBER“ verwenden, sind möglicherweise zusätzliche Logik- oder String-Manipulationsfunktionen erforderlich, um das gewünschte Sortierergebnis zu erzielen.

Das obige ist der detaillierte Inhalt vonWie sortiere ich String-Spalten mit Zahlen in aufsteigender Reihenfolge in MySQL?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!