Maison >base de données >tutoriel mysql >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) » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 00:18:02307parcourir

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 sous forme 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 adresse numérique représentation. En concaténant '.0.0.0' au numéro_version, 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 pénalité de 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn