Chercher une adresse IP dans un champs

Fermé
hiba - 6 mars 2018 à 13:45
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 6 mars 2018 à 16:23
bonjour
je cherche un code SQL qui permet d'extraire une adresse IP dans un champ d'une table ensuite verifier si cette adresse existe dans un autre champs d'une autre table
la premiere table est serveur qui contient le champ message de type varchar ( contient une chaine et une adresse ip)
la deuxieme table est adresse qui contient un champ ip de type varchar(15) ( contient seulement des adresses ip)
je veux extraire l'adresse existante dans le champ message du table serveur sachant que je ne connais pas la position de debut et de verifier si elle existe dans le champ ip du table adresse.
merci de m'aider.

1 réponse

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 mars 2018 à 15:31
Bonjour,

Est-ce que tu pourrais connaître sa position par rapport à un délimiteur ? Par exemple, après la 4ème espace, ou point-virgule, ou autre... Auquel cas tu peux tenter la fonction SUBSTRING_INDEX.

Parce qu'extraire une partie d'un champ n'est pas du tout évident en MySQL.

Il serait plus facile de trouver tous les messages qui n'ont pas une IP listée dans adresse, ou tous les messages correspondant à une IP donnée...

Sinon, si les performances ne sont pas un problème, tu peux le faire "à la main" avec un langage de script comme Php, qui récupère tout, cherche l'IP, et regarde dans Adresse...

Xavier
0
comment alors determiner tous les messages qui contient une adresse qui n'est pas existante dans adresse c'est à dire trouver tous les messages qui n'ont pas une IP listée dans adresse, ou tous les messages correspondant à une IP donnée...
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 mars 2018 à 16:23
Si ça te convient, tu peux faire :

-> Tous les messages correspondant à une IP donnée :
SELECT * FROM serveur WHERE message LIKE '%192.168.0.1%'


-> Tous les messages dont l'IP n'est pas dans la table adresse
SELECT s.*
FROM serveur s
LEFT OUTER JOIN adresse a ON s.message LIKE CONCAT('%', a.ip, '%')
WHERE a.ip IS NULL


Xavier
0