Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:Двоичен към 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)

Проверете дали работи и там =)

Редактиране

Проблемът е, че inet_ntoa изглежда се анализира от десетични strings числово представяне, а не шестнадесетично, или от шестнадесетични integers . Сравнете:

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)

Редактиране

Това е по-просто и изглежда също работи:

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. mysql двоично сравнение не използва индекс

  2. Преместване на таблица от една база данни в друга в MySQL

  3. Вмъкване в 2 таблици с PDO MySQL

  4. Промяна на часовата зона на Google Cloud SQL CURRENT_TIMESTAMP?

  5. SQL - Как да поръчате, като използвате Count от друга таблица