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
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 21
    Points : 18
    Points
    18
    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
    YYYY
    Inscrit en
    mai 2002
    Messages
    19 231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : YYYY
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 19 231
    Points : 45 458
    Points
    45 458
    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

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

    Informations forums :
    Inscription : mai 2007
    Messages : 21
    Points : 18
    Points
    18
    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
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    3 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 996
    Points : 9 307
    Points
    9 307
    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
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 21
    Points : 18
    Points
    18
    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 actif
    Profil pro
    Administrateur
    Inscrit en
    mai 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2008
    Messages : 143
    Points : 251
    Points
    251
    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' );

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, 18h43
  2. Manipuler des adresses IP
    Par GilardeauG dans le forum C#
    Réponses: 2
    Dernier message: 27/10/2010, 02h19
  3. Réponses: 7
    Dernier message: 19/07/2010, 20h01
  4. Manipulation des adresses
    Par sorry60 dans le forum C
    Réponses: 7
    Dernier message: 19/03/2007, 10h08

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