Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine MySQL-Spalte, die „Name-Nummer'-Strings enthält, numerisch sortieren?

Wie kann ich eine MySQL-Spalte, die „Name-Nummer'-Strings enthält, numerisch sortieren?

Linda Hamilton
Freigeben: 2024-12-30 19:22:10
Original
225 Leute haben es durchsucht

How Can I Sort a MySQL Column Containing

Teilweise nicht numerischen Text in Zahlen für die MySQL-Abfragesortierung konvertieren

In MySQL kann das Sortieren von Varchar-Spalten basierend auf eingebetteten numerischen Werten eine Herausforderung sein . Diese Frage befasst sich mit einem praktischen Szenario, in dem eine Spalte Bezeichner im Format „Name-Nummer“ enthält und basierend auf der numerischen Komponente sortiert werden muss.

Problem:

Die Spalte enthält Text im Format „Name-Nummer“, wobei die Zahlenkomponente in den Text eingebettet ist. Das Sortieren der Spalte mit der Standardzeichenreihenfolge führt aufgrund des Zeichenvergleichs zu einer ungenauen Reihenfolge.

Lösung:

Um dieses Problem zu beheben, ist es notwendig, die Nicht-Zeichenfolge zu konvertieren -Numerischer Text vor dem Sortieren in Zahlen umwandeln. Die folgende Abfrage kann dies erreichen:

SELECT field,CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
FROM table
ORDER BY num;
Nach dem Login kopieren

Erklärung:

  • SUBSTRING_INDEX(field,'-',-1): Extrahiert die numerische Komponente aus den Bezeichnertext durch Aufteilen am Bindestrich (-) und Zurückgeben des letzten Teilzeichenfolge.
  • CONVERT(): Konvertiert die extrahierte Teilzeichenfolge in eine vorzeichenlose Ganzzahl, sodass sie verglichen und numerisch sortiert werden kann.
  • ORDER BY num: Sortiert die Ergebnisse basierend auf dem umgewandelten numerischen Wert.

Zusätzlich Überlegungen:

  • Es wird davon ausgegangen, dass der Namensteil der Kennung keine Zahlen enthält, um falsche numerische Konvertierungen zu vermeiden.
  • Wenn der Namensteil Zahlen enthalten kann, ist dies der Fall Es ist notwendig, einen komplexeren Regex-Ausdruck zu verwenden, um die numerische Komponente genau zu extrahieren.

Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Spalte, die „Name-Nummer'-Strings enthält, numerisch sortieren?. 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