sql >> Databáze >  >> RDS >> Mysql

SQL:Binární adresa 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)

Zkontrolujte, zda to funguje i tam =)

Upravit

Problém je v tom, že inet_ntoa Zdá se, že analyzuje z desítkové soustavy strings reprezentace čísel, nikoli hexadecimálních, nebo z hexadecimálních integers . Porovnejte:

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)

Upravit

Toto je jednodušší a zdá se, že to také funguje:

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


  1. Jak zjistit velikost indexů v MySQL

  2. SQL Server DATEPART() vs DATENAME() – Jaký je rozdíl?

  3. Porovnat struktury dvou databází?

  4. Jak LTRIM() funguje v MariaDB