Heim >Datenbank >MySQL-Tutorial >Wie sortiere ich MySQL-Zeilen numerisch, wenn IDs alphanumerischen Text enthalten?
MySQL-Abfrage zum Konvertieren von teilweise nicht numerischem Text in Zahlen
In MySQL ist es möglich, den numerischen Teil aus nicht numerischem Text zu extrahieren und konvertieren Sie ihn in einen numerischen Datentyp, um eine ordnungsgemäße Sortierung zu ermöglichen.
Stellen Sie sich den Fall einer Spalte vor, die Bezeichner enthält die Namen und Nummern im Format „Name-Nummer“ kombinieren. Das Sortieren von Zeilen basierend auf dieser Spalte unter Verwendung der Standardzeichenreihenfolge führt zu einer unerwünschten Reihenfolge:
name-1 name-11 name-12 name-2
Um dieses Problem zu beheben, können Sie den numerischen Teil mit der Funktion SUBSTRING_INDEX() aus dem Text extrahieren:
SUBSTRING_INDEX(field,'-',-1)
Diese Funktion extrahiert die Teilzeichenfolge nach dem letzten Vorkommen des „-“-Zeichens und isoliert so effektiv die Zahl Teil.
Als nächstes können Sie die extrahierte Teilzeichenfolge mit der Funktion CONVERT() in eine vorzeichenlose Ganzzahl konvertieren:
CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
Dieser Schritt wandelt die Zeichenfolge in einen numerischen Datentyp um, der sein kann wird für numerische Vergleiche verwendet.
Schließlich können Sie die ORDER BY-Klausel verwenden, um die Zeilen basierend auf den extrahierten und konvertierten Zahlen zu sortieren Teil:
ORDER BY num
Diese Abfrage sollte die gewünschte Sortierreihenfolge erzeugen:
name-1 name-2 name-11 name-12
Beachten Sie, dass dieser Ansatz davon ausgeht, dass der nicht numerische Teil des Bezeichners keine Zahlen enthält. Wenn dies nicht gewährleistet ist, müssen Sie möglicherweise komplexere String-Manipulationstechniken verwenden.
Das obige ist der detaillierte Inhalt vonWie sortiere ich MySQL-Zeilen numerisch, wenn IDs alphanumerischen Text enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!