Sortierung der MySQL-Versionsnummern
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 Funktion INET_ATON, um eine Zeichenfolge, die eine IP-Adresse darstellt, in eine Zahl umzuwandeln Darstellung. 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 Sortierung 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.
Das obige ist der detaillierte Inhalt vonWie sortiere ich MySQL-Versionsnummern, die als „varbinary(300)' gespeichert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!