"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment trier les numéros de version MySQL stockés sous « varbinary(300) » ?

Comment trier les numéros de version MySQL stockés sous « varbinary(300) » ?

Publié le 2024-11-15
Parcourir:723

How to Sort MySQL Version Numbers Stored as `varbinary(300)`?

Tri des numéros de version MySQL

Lors du stockage des numéros de version en tant que varbinary(300) dans MySQL, les trier en utilisant l'ordre par défaut par numéro de version peut donner des résultats incorrects. Pour résoudre ce problème, pensez à utiliser la fonction INET_ATON pour faciliter le tri.

La requête modifiée :

SELECT version_number 
FROM table 
ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))

Cette technique s'appuie sur la fonction INET_ATON pour convertir une chaîne représentant une adresse IP en une représentation numérique . En concaténant « .0.0.0 » avec version_number, nous nous assurons que chaque numéro de version comporte au moins quatre composants, que nous utilisons ensuite SUBSTRING_INDEX pour extraire.

En triant en fonction de la représentation numérique des quatre premiers composants de pour chaque numéro de version, nous obtenons l'ordre de tri souhaité. Notez cependant que ce tri reposant sur une fonction, il peut engendrer une dégradation des performances par rapport au tri directement sur la colonne avec un index.

Une autre solution, proposée par @spanky, consiste à séparer les composants du numéro de version en colonnes individuelles. Par exemple, créez des colonnes pour les versions majeures, mineures, de correctifs et de build. Cette approche permet un tri efficace sur des composants spécifiques, mais peut nécessiter une manipulation de données plus complexe.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3