Heim >Datenbank >MySQL-Tutorial >So sortieren Sie Zeichenfolgenspalten mit Zahlen in SQL: Führende Nullen adressieren und numerische Reihenfolge erreichen?
Sortieren von Zeichenfolgenspalten mit Zahlen in SQL
Beim Versuch, eine Zeichenfolgenspalte mit numerischen Werten in der Standardreihenfolge in SQL zu sortieren, ist das natürlich Der Sortieralgorithmus führt möglicherweise nicht zu den gewünschten Ergebnissen. Insbesondere können Zahlen mit führenden Nullen im Vergleich zu ihrem numerischen Wert willkürlich platziert werden.
Um dieses Problem zu beheben, betrachten Sie die folgende SQL-Abfrage:
<code class="sql">SELECT * FROM table ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column)+1) AS SIGNED)</code>
Diese Abfrage geht davon aus, dass die Spaltendaten folgen das Muster „STRING SPACE NUMBER“ und verwendet die SUBSTRING-Funktion, um den Zahlenanteil jeder Zeichenfolge zu extrahieren. Durch Umwandeln des extrahierten Werts in eine vorzeichenbehaftete Ganzzahl kann die Abfrage die Ergebnisse auf der Grundlage der numerischen Werte statt der Zeichenfolgendarstellung sortieren.
Hier ist ein Beispiel zur Demonstration der Funktionalität:
<code class="sql">INSERT INTO t (st) VALUES ('a 1'),('a 12'),('a 6'),('a 11'); SELECT * FROM t ORDER BY st; +----+------+ | id | st | +----+------+ | 1 | a 1 | | 4 | a 11 | | 2 | a 12 | | 3 | a 6 | +----+------+ SELECT * FROM t ORDER BY CAST(SUBSTRING(st,LOCATE(' ',st)+1) AS SIGNED); +----+------+ | id | st | +----+------+ | 1 | a 1 | | 3 | a 6 | | 4 | a 11 | | 2 | a 12 | +----+------+</code>
Diese Abfrage sortiert die Zeilen korrekt basierend auf den numerischen Werten in den Zeichenfolgen. Wenn die Zeichenfolgendaten einem anderen Muster folgen, sind möglicherweise Anpassungen erforderlich, um den Zahlenanteil genau zu extrahieren.
Das obige ist der detaillierte Inhalt vonSo sortieren Sie Zeichenfolgenspalten mit Zahlen in SQL: Führende Nullen adressieren und numerische Reihenfolge erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!