IP-Adresse in der Datenbank vergleichen

8

Ich versuche, ein Problem zu lösen, das zwei Spalten in einer Tabelle vergleichen könnte. Die Tabelle ist wie folgt

%Vor%

Mein Problem ist, dass ich eine IP von 25.195.32.0 habe und diese mit der Spalte from und to vergleichen und die country name zurückgeben soll.

    
likith sai 05.05.2014, 06:37
quelle

8 Antworten

11

Sie können INET_ATON verwenden, um einen numerischen Wert der zu vergleichenden IPs zu erhalten.

%Vor%

Ссылка

    
Mark Miller 05.05.2014 06:47
quelle
1

Sie können die Bedingung IN() try verwenden verwenden, indem Sie AND oder OR

verwenden %Vor%     
Rakesh Sharma 05.05.2014 06:48
quelle
1
%Vor%

Dann in php (vorausgesetzt, du hast die Quest ausgeführt und Ergebnisse gespeichert):

%Vor%

Nicht besonders effizient oder elegant, aber Sie bekommen die Idee.

    
ioseph 05.05.2014 06:50
quelle
1

Wie ich aus der Frage interpretiere, können Sie eine Maske verwenden und die Basis-IP-Adresse abrufen und dann vergleichen. Um die Maske zu verwenden und die Basis-IP zu erhalten, müssen Sie etwas über verschiedene Klassen (A, B, C, D) lernen, die von der Adressierung verwendet werden.

Lesen Sie diesen Link Ссылка

    
Nikhil Agrawal 05.05.2014 06:57
quelle
1

INET_ATON gibt die gewünschte Lösung für IPV4 -Adressen.

Abgesehen davon können Sie auch versuchen, HEX version der IP zu vergleichen.

%Vor%

Beispiel :

%Vor%     
Ravinder Reddy 05.05.2014 06:57
quelle
1

Wählen Sie einen Bereich:

%Vor%

Wenn Sie ein Skript (zB PHP) verwenden können, können Sie die gesamte Tabelle auswählen und eine Maske für die IP erstellen. Etwas wie:

  

Wir können wissen, was zu der Netzwerkadresse 192.168.129.3/18 ip gehört   folgt:

%Vor%      

Das Ergebnis lieferte uns dieses Skript ist 192.168.128.0, das ist die Netzwerkadresse, zu der die IP 192.168.129.3/18 gehört.

Dann können Sie ein "SELECT" Ihres Netzwerks mit "von" und "bis" Feldern machen.

    
victorlopezsanchez 05.05.2014 07:28
quelle
1

Verwandle IP in Ganzzahl, dann Vergleich Ganzzahl ist einfach. MySQL bietet dazu die Funktion inet_aton an.

%Vor%

Für die Leistung sollten Sie die Spalte from , to in Integer Manully umwandeln. z.B. Zu den Spalten from_n , to_n hinzufügen. dann wird dein SQL so sein:

%Vor%

Wenn Sie MySQL nicht verwenden, sollten Sie $ip zuerst in die Ganzzahl $ ip_n transformieren (mit etwas wie Pythons socket.inet_aton ) und dann inet_aton($ip) durch $ip_n ersetzen.

    
Xing Fei 05.05.2014 06:50
quelle
0

Verwenden Sie diese Abfrage

%Vor%     
user3091574 05.05.2014 06:39
quelle

Tags und Links