MySQL: VARCHAR-Spalten als Ganzzahlen sortieren
Datenbanken speichern Zahlen manchmal als Zeichenfolgen (VARCHAR), oft aufgrund von Legacy-Systemen oder externen Abhängigkeiten. Dies kann bei Standard-String-Vergleichen zu falschen Sortierergebnissen führen. So sortieren Sie diese Zahlen im String-Format in MySQL richtig:
Optimale Lösung: Datentypkonvertierung
Der beste Ansatz besteht darin, den Datentyp der Tabellenspalte in eine Ganzzahl (INT, BIGINT usw.) zu ändern. Dies gewährleistet eine ordnungsgemäße numerische Sortierung und vermeidet zukünftige Probleme.
Alternative Methoden (wenn eine Änderung des Datentyps nicht möglich ist):
CAST()
, um die VARCHAR-Werte vor dem Sortieren explizit in Ganzzahlen umzuwandeln:<code class="language-sql">SELECT col FROM yourtable ORDER BY CAST(col AS UNSIGNED);</code>
Dadurch wird MySQL gezwungen, die Werte während des Sortiervorgangs numerisch zu behandeln. UNSIGNED
verhindert die Interpretation negativer Zahlen.
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
MySQL versucht, die Zeichenfolge als Zahl für die Additionsoperation zu interpretieren, wodurch die implizite Konvertierung ausgelöst wird.
String Value | Integer Value |
---|---|
'1' | 1 |
'ABC' | 0 |
'123miles' | 123 |
'3' | 0 |
Nicht-numerische Zeichen führen zu einem 0-Wert. Führende nicht numerische Zeichen führen dazu, dass die gesamte Konvertierung fehlschlägt.
Das obige ist der detaillierte Inhalt vonWie kann ich VARCHAR-Zahlen in MySQL als Ganzzahlen sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!