[SQL] Trié par adresse IP
Résolu
afrodje
Messages postés
759
Date d'inscription
Statut
Membre
Dernière intervention
-
Schiver Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Schiver Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne trouve pas comment trier dans un orde croissant un champ qui contient des adresses IP:
par exemple actuellement :
Alors que je voudrais avoir :
Merci
Je ne trouve pas comment trier dans un orde croissant un champ qui contient des adresses IP:
par exemple actuellement :
192.168.1.1 192.168.1.100 192.168.1.122 192.168.1.20 192.168.1.251 192.168.1.30
Alors que je voudrais avoir :
192.168.1.1 192.168.1.20 192.168.1.30 192.168.1.100 192.168.1.122 192.168.1.251
Merci
A voir également:
- Sql inet_aton
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
5 réponses
Voila la solution :
SELECT CONVERT(SUBSTRING_INDEX(adresse_ip, '.', 1), UNSIGNED INTEGER) as nb1, CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(adresse_ip, '.', 2), '.', -1), UNSIGNED INTEGER) as nb2, CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(adresse_ip, '.', -2), '.', 1), UNSIGNED INTEGER) as nb3, CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(adresse_ip, '.', -2), '.', -1), UNSIGNED INTEGER) as nb4, adresse_ip from table1 ORDER BY nb1,nb2,nb3,nb4
Bonjour
Tu es obligé de décomposer l'adresse en 4 champs numériques. Le détail de la syntaxe dépend totalement du langage que tu utilises pour faire ce tri.
Bien sûr, si tu travailles toujours sur le sous-réseau 192.168.1.x, extraire le dernier champ peut suffire.
Tu es obligé de décomposer l'adresse en 4 champs numériques. Le détail de la syntaxe dépend totalement du langage que tu utilises pour faire ce tri.
Bien sûr, si tu travailles toujours sur le sous-réseau 192.168.1.x, extraire le dernier champ peut suffire.
Bonsoir,
Essaye un truc du genre
Select * from monchamp order by monchamp ASC;
A moins que je me fourvoie completement et que je t'ai pris pour un debutant...
Si c'est le cas je m'en excuse.
Essaye un truc du genre
Select * from monchamp order by monchamp ASC;
A moins que je me fourvoie completement et que je t'ai pris pour un debutant...
Si c'est le cas je m'en excuse.
Autant pour moi.^^
Tu veux classer par nombre et non pas par le premier chiffre..J'avais mal lu les resultats de requêtes.
Hum j'ai deja fait la manip mais c'etait y'a un moment et mes conaissances sql se sont etiolées....Jvais essayer de faire un effort de memoire mais je garantis rien.
Tu veux classer par nombre et non pas par le premier chiffre..J'avais mal lu les resultats de requêtes.
Hum j'ai deja fait la manip mais c'etait y'a un moment et mes conaissances sql se sont etiolées....Jvais essayer de faire un effort de memoire mais je garantis rien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai trouvé ça sur SQL server, mais ça marche pas tel quel sur MySQL :
http://www.sql-server-helper.com/tips/sort-ip-address.aspx
Ça peut être une base pour rechercher...
http://www.sql-server-helper.com/tips/sort-ip-address.aspx
Ça peut être une base pour rechercher...
mysql> SELECT INET_ATON(adresseIP)AS bin_ip, adresseIP
-> FROM plageadresseip
-> ORDER BY bin_ip;
qui donnera le résultat suivant :
+------------------+---------------+
| bin_ip | adresseIP |
+------------------+---------------+
| 1124767601 | 67.10.151.113 |
| 1146676993 | 68.88.231.1 |
| 1146676994 | 68.88.231.2 |
| 1146676995 | 68.88.231.3 |
| 1146677002 | 68.88.231.10 |
| 1146677014 | 68.88.231.22 |
| 1146677015 | 68.88.231.23 |
| 1146677016 | 68.88.231.24 |
| 1146677017 | 68.88.231.25 |
| 1146677018 | 68.88.231.26 |
| 1146677019 | 68.88.231.27 |
| 1146677020 | 68.88.231.28 |
| 1146677021 | 68.88.231.29 |
| 1146677022 | 68.88.231.30 |
+------------+---------------+
Pour ne pas afficher la colonne bin_ip, il faut juste appliquer la requête de cette manière :
SELECT adresseIP
FROM plageadresseip
ORDER BY INET_ATON( adresseIP );
La fonction INET_ATON (ATON = Adresse TO Number) est très efficace...
Une autre fonction existe qui permet de faire le processus inverse... elle s'appelle très logiquement INET_NTOA... ;-)