Si tous vos numéros de version ressemblent à l'un de ces éléments :
X
X.X
X.X.X
X.X.X.X
où X est un entier de 0 à 255 (inclus), alors vous pouvez utiliser le INET_ATON()
fonction pour transformer les chaînes en nombres entiers aptes à la comparaison.
Avant d'appliquer la fonction, cependant, vous devez vous assurer que l'argument de la fonction est du X.X.X.X
formulaire en ajoutant la quantité nécessaire de '.0'
à cela. Pour ce faire, vous devez d'abord savoir combien de .
est la chaîne contient déjà, ce qui peut être fait comme ceci :
CHAR_LENGTH(ver) - CHAR_LENGTH(REPLACE(ver, '.', '')
Autrement dit, le nombre de points dans la chaîne est la longueur de la chaîne moins sa longueur après suppression des points.
Le résultat obtenu doit alors être soustrait de 3
et, avec '.0'
, passé à REPEAT()
fonction :
REPEAT('.0', 3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
Cela nous donnera la sous-chaîne qui doit être ajoutée au ver
d'origine valeur, pour se conformer au X.X.X.X
format. Ainsi, il sera à son tour passé au CONCAT()
fonction avec ver
. Et le résultat de ce CONCAT()
peut maintenant être passé directement à INET_ATON()
. Voici donc ce que nous obtenons finalement :
INET_ATON(
CONCAT(
ver,
REPEAT(
'.0',
3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
)
)
)
Et ce n'est que pour une valeur ! :) Une expression similaire doit être construite pour l'autre chaîne, après quoi vous pourrez comparer les résultats.
Références :