Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL:Binarny na adres IP

mysql> select inet_ntoa(conv('4333d26e', 16, 10));
+-------------------------------------+
| inet_ntoa(conv('4333d26e', 16, 10)) |
+-------------------------------------+
| 67.51.210.110                       |
+-------------------------------------+
1 row in set (0.00 sec)

Sprawdź, czy tam też działa =)

Edytuj

Problem polega na tym, że inet_ntoa wydaje się analizować z dziesiętnego strings reprezentacja liczb, nie szesnastkowych lub z szesnastkowych integers . Porównaj:

mysql> select inet_ntoa(0x4333d26e);
+-----------------------+
| inet_ntoa(0x4333d26e) |
+-----------------------+
| 67.51.210.110         |
+-----------------------+
1 row in set (0.02 sec)

mysql> select inet_ntoa('0x4333d26e');
+-------------------------+
| inet_ntoa('0x4333d26e') |
+-------------------------+
| 0.0.0.0                 |
+-------------------------+
1 row in set, 1 warning (0.00 sec)

Edytuj

Jest to prostsze i wydaje się również działać:

SELECT INET_NTOA(CONV(ip_bin, 2, 10)) FROM log_metadata


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie procedury składowanej MySQL w ROR 4

  2. Uniemożliwianie unikatowej wielkości liter

  3. MYSQL - Jak połączyć dwa zapytania, aby pominąć elementy znalezione w drugim zapytaniu (a może jakieś lepsze rozwiązanie?)

  4. Chcę przekonwertować zapytanie MySQL na PDO?

  5. Dynamiczna lista rozwijana PHP MySQL