IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Manipulation des adresses IP


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 19
    Points
    19
    Par défaut Manipulation des adresses IP
    Bonjour,
    Les adresses IPs sont stockées en hexa sur la base postgreSQL si je veux faire une recherche sur une ardresse IP comment procéder la conversion IP décimale en hexa.
    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Une adresse IP est juste un entier 32 bits non signé. le convertir en hexadécimal est donc ultra simple !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Merci de votre réponse. J'ai effectué le test suivant qui renvoie bien de l'hexa
    # select to_hex(10);
    to_hex
    --------
    a
    (1 row)
    Comment procède t'on pour une adresse IP?

    # select to_hex(192.168.1.1);
    ERROR: syntax error at or near ".1"
    LINE 1: select to_hex(192.168.1.1);

    Il semble que le "." ne fonctionne pas en séparateur, ni l'espace ou la virgule.
    Cdt.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Il faut convertir chaque octet en hexa, puis "concaténer" le tout:
    192 => C0
    168 => A8
    1 => 01
    Donc 192.168.1.1, ça donne en hexa C0A80101.
    Tu peux aussi commencer par trouver l'écriture décimale de l'adresse (ici (192*256^3) + (168*256^2) + (1 * 256) + (1) = 3232235777), et la convertir en hexa.

    Tatayo.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Merci du retour très rapide. Faire des conversions une à une de chaque octet me parait fastidieux.
    Je pense qu'une fonction à été prévue à cet effet je vais continuer à chercher.
    Merci.

  6. #6
    Membre averti
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Points : 433
    Points
    433
    Par défaut
    Citation Envoyé par yartempion Voir le message
    Bonjour,
    Merci du retour très rapide. Faire des conversions une à une de chaque octet me parait fastidieux.
    Je pense qu'une fonction à été prévue à cet effet je vais continuer à chercher.
    Merci.
    Fonction ip2hex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE OR REPLACE FUNCTION ip2hex( ip char(15) )
    returns char(15) IMMUTABLE 
    LANGUAGE 'plpgsql'
    AS $BODY$
    DECLARE a integer[];
    DECLARE b bigint;
     
    BEGIN 
        a = string_to_array(ip, '.');
        b = a[1]*256^3 + a[2]*256^2 + a[3]*256 + a[4];
     
        return UPPER(to_hex(b));
    END;
    $BODY$;

    Test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ip2hex( '192.168.1.1' );

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 19
    Points
    19
    Par défaut Merci
    Merci pour la fonction. Je vais essayer de m'en servir. Je ne suis pas parvenue à trouver mieux.
    Bien cordialement

Discussions similaires

  1. Manipuler les adresse des cellules en VBA
    Par DjallelE dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/04/2018, 17h43
  2. Manipuler des adresses IP
    Par GilardeauG dans le forum C#
    Réponses: 2
    Dernier message: 27/10/2010, 01h19
  3. Réponses: 7
    Dernier message: 19/07/2010, 19h01
  4. Manipulation des adresses
    Par sorry60 dans le forum C
    Réponses: 7
    Dernier message: 19/03/2007, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo