INET_NTOA() în MySQL

Transformă un număr înapoi în adresă IPv4 cu puncte (inversa lui INET_ATON()).

Sintaxă
INET_NTOA(numar)

Ce face INET_NTOA()

INET_NTOA() primește numărul obținut cu INET_ATON() și returnează adresa ca text, de exemplu 10.0.5.9. Se folosește la afișarea adreselor salvate ca numere.

Pentru un număr în afara intervalului 0 – 4294967295 returnează NULL, cu avertisment.

Parametri

Parametru Descriere
numar Adresa IPv4 ca număr.

Ce returnează

Adresa ca text sau NULL.

Exemple

Exemplul 1: Numere transformate în adrese

SELECT INET_NTOA(167773449) AS adresa,
       INET_NTOA(0) AS minim,
       INET_NTOA(4294967295) AS maxim,
       INET_NTOA(4294967296) AS prea_mare;

Rezultat

+----------+---------+-----------------+-----------+
| adresa   | minim   | maxim           | prea_mare |
+----------+---------+-----------------+-----------+
| 10.0.5.9 | 0.0.0.0 | 255.255.255.255 | NULL      |
+----------+---------+-----------------+-----------+
Warning (Code 1411): Incorrect integer value: '4294967296' for function inet_ntoa

Exemplul 2: Primele adrese după numărul de vizite

CREATE TABLE vizite (ip INT UNSIGNED);
INSERT INTO vizite VALUES
  (INET_ATON('86.120.4.18')), (INET_ATON('86.120.4.18')), (INET_ATON('5.12.33.140')),
  (INET_ATON('86.120.4.18')), (INET_ATON('5.12.33.140')), (INET_ATON('188.24.1.9'));

SELECT INET_NTOA(ip) AS adresa, COUNT(*) AS vizite
FROM vizite
GROUP BY ip
ORDER BY vizite DESC;

Rezultat

+-------------+--------+
| adresa      | vizite |
+-------------+--------+
| 86.120.4.18 |      3 |
| 5.12.33.140 |      2 |
| 188.24.1.9  |      1 |
+-------------+--------+

Greșeli frecvente

  • Sortezi adresele după textul dat de INET_NTOA(). Ordinea textelor pune 10.0.0.9 după 10.0.0.10; sortează după coloana numerică.

Comenzi înrudite

  • INET_ATON(): Transformă o adresă IPv4 (de exemplu 10.0.5.9) într-un număr întreg, ușor de comparat și indexat.
  • GROUP BY: Grupează rândurile cu aceeași valoare, ca să calculezi totaluri pentru fiecare grup.