Wie man mit einer ip Adresse in mysql?
Zum Beispiel, ich habe eine Spalte speichern von Daten wie diese.
Apple
12.5.126.40
Smite
Abby
127.0.0.1
56.5.4.8
9876543210
Notes
So wählen Sie nur die Zeilen mit den Daten im IP-format?
Ich habe versucht mit '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
aber ich habe keine Ahnung, warum es auch Spiele 9876543210
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie gehen zu müssen,
REGEXP
die IP-Adresse dotted quad Muster.Technisch, dieses match zu Werten, die nicht gültig sind IP-Adressen, wie
999.999.999.999
, aber das kann nicht wichtig sein. Was ist wichtig ist, ist die Befestigung Ihrer Daten, so dass IP-Adressen gespeichert sind, in eine eigene Spalte getrennt von was auch immer andere Daten haben Sie in hier. Es ist fast immer eine schlechte Idee, zum mischen von Datentypen in einer Spalte.Andere Methode ist, um zu versuchen, zu konvertieren, die IP-Adresse in einen long integer-über die MySQL -
INET_ATON()
- Funktion. Eine ungültige Adresse zurückNULL
.Diese Methode ist wahrscheinlich effizienter sein, als der reguläre Ausdruck.
Können Sie einzubetten in eine
WHERE
Zustand wie:WHERE INET_ATON(thecolumn) IS NOT NULL
Dies ist möglicherweise nicht der effizienteste Weg sein, und es ist nicht technisch regex, aber es sollte funktionieren:
können Sie auch die nützliche Funktion inet_aton()
Langwierig, funktioniert aber:
IS_IPV4()
ist eine native mysql-Funktion, die Sie überprüfen können, ob ein Wert eine gültige IP-Version 4.Ich habe keine Daten, aber ich Schätze, dass dies sein muss, die solide und effiziente Möglichkeit, dies zu tun.
Gibt es auch ähnliche native Funktionen, die Sie, dass der check für IP Version 6, etc.