MySQL-Versionsnummernsortierung
Wenn Sie Versionsnummern als varbinary(300) in MySQL speichern, kann das Sortieren in der Standardreihenfolge nach Versionsnummer zu Ergebnissen führen falsche Ergebnisse. Um dieses Problem zu lösen, sollten Sie die Funktion INET_ATON verwenden, um die Sortierung zu erleichtern.
Die geänderte Abfrage:
SELECT version_number FROM table ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))
Diese Technik basiert auf der INET_ATON-Funktion, um eine Zeichenfolge, die eine IP-Adresse darstellt, in eine numerische Darstellung umzuwandeln . Durch die Verkettung von „.0.0.0“ mit Versionsnummer stellen wir sicher, dass jede Versionsnummer mindestens vier Komponenten hat, die wir dann mit SUBSTRING_INDEX extrahieren.
Durch Sortieren basierend auf der numerischen Darstellung der ersten vier Komponenten von Mit jeder Versionsnummer erreichen wir die gewünschte Sortierreihenfolge. Beachten Sie jedoch, dass diese Sortierung, da sie auf einer Funktion basiert, im Vergleich zur Sortierung direkt nach der Spalte mit einem Index zu Leistungseinbußen führen kann.
Eine andere von @spanky vorgeschlagene Lösung beinhaltet die Aufteilung der Versionsnummernkomponenten in einzelne Spalten. Erstellen Sie beispielsweise Spalten für Haupt-, Neben-, Patch- und Build-Versionen. Dieser Ansatz ermöglicht eine effiziente Sortierung nach bestimmten Komponenten, erfordert jedoch möglicherweise eine komplexere Datenbearbeitung.
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