Ce face INET_ATON()
INET_ATON() calculează numărul care corespunde unei adrese IPv4: 10.0.5.9 devine 10×256³ + 0×256² + 5×256 + 9 = 167773449. Ca număr, o adresă ocupă 4 octeți și poate fi căutată pe intervale (toate adresele unei rețele) cu BETWEEN.
Pentru o adresă invalidă returnează NULL, cu avertisment. Inversa este INET_NTOA(). Pentru adrese IPv6 există INET6_ATON().
Parametri
| Parametru | Descriere |
|---|---|
adresa_ip |
Adresa IPv4 ca text, cu patru numere separate prin punct. |
Ce returnează
Un număr întreg sau NULL.
Exemple
Exemplul 1: Adrese transformate în numere
SELECT INET_ATON('10.0.5.9') AS adresa,
INET_ATON('255.255.255.255') AS maxim,
INET_ATON('300.1.1.1') AS invalida;
Rezultat
+-----------+------------+----------+
| adresa | maxim | invalida |
+-----------+------------+----------+
| 167773449 | 4294967295 | NULL |
+-----------+------------+----------+
Warning (Code 1411): Incorrect string value: ''300.1.1.1'' for function inet_aton
Exemplul 2: Vizitele dintr-o rețea
CREATE TABLE vizite (ip INT UNSIGNED, pagina VARCHAR(30));
INSERT INTO vizite VALUES
(INET_ATON('192.168.1.15'), '/produse'),
(INET_ATON('192.168.1.200'), '/cos'),
(INET_ATON('192.168.2.7'), '/produse'),
(INET_ATON('10.0.0.3'), '/contact');
SELECT INET_NTOA(ip) AS ip, pagina
FROM vizite
WHERE ip BETWEEN INET_ATON('192.168.1.0') AND INET_ATON('192.168.1.255')
ORDER BY ip;
Rezultat
+---------------+----------+
| ip | pagina |
+---------------+----------+
| 192.168.1.15 | /produse |
| 192.168.1.200 | /cos |
+---------------+----------+
Greșeli frecvente
- Salvezi rezultatul într-o coloană
INTcu semn. Adresele care încep cu un număr peste 127 nu încap; foloseșteINT UNSIGNED. - Folosești forme scurte ca
'127.1'. Rezultatul nu este garantat; scrie mereu adresa completă, cu patru numere.
Comenzi înrudite
INET_NTOA(): Transformă un număr înapoi în adresă IPv4 cu puncte (inversa lui INET_ATON()).BETWEEN: Verifică dacă o valoare este într-un interval, cu tot cu capete.