Sortieren von Zeichenfolgenspalten mit eingebetteten Zahlen in SQL
In SQL ist es möglich, Zeichenfolgenspalten mit Zahlen mithilfe bestimmter Techniken zu sortieren. Dies kann nützlich sein, wenn der natürliche Sortieralgorithmus von Datenbanken wie MySQL nicht die gewünschten Ergebnisse liefert.
Um eine benutzerdefinierte Sortierung von Zeichenfolgenspalten mit Zahlen zu erreichen, können mehrere Ansätze verwendet werden:
CAST und SUBSTRING verwenden:
SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column) 1) AS SIGNED)
Diese Technik zerlegt die Spalte in zwei Teile: das Präfix vor dem Leerzeichen und die Zahl danach. Die Zahl wird dann zum Vergleich in einen numerischen Typ (in diesem Fall SIGNED) umgewandelt.
Using SUBSTRING_INDEX:
ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)
Dieser Ansatz verwendet die Funktion SUBSTRING_INDEX, um die Präfix- und Zahlenkomponenten zu extrahieren. Anschließend wird zuerst nach dem Präfix und dann nach der umgewandelten Zahl sortiert.
Hinweis: Wenn das Spaltenmuster von „WORD_space_NUMBER“ abweicht, ist möglicherweise ein anderer Ansatz erforderlich.
Beispiele:
Beispiel Daten | Natürliche Sortierung | Benutzerdefinierte Sortierung |
---|---|---|
a 1, a 12, a 6, a 11 | a 1, a 12, a 2, a 3 | a 1, a 2, a 3, a 12 |
b 1, b 12, b 6, b 11 | b 1, b 12, b 2, b 3 | b 1, b 2, b 3, b 12 |
Durch den Einsatz dieser Techniken ist es möglich, Zeichenfolgenspalten mit eingebetteten Zahlen auf individuelle Weise zu sortieren und so sicherzustellen, dass die Ergebnisse den spezifischen Anwendungsanforderungen entsprechen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3