MySQL将varchar列的ip地址复制到同一个表中的整数

时间:2015-05-28 01:27:28

标签: mysql

我想将varchar(32)列中相同的“干净”IP号复制为整数。

我试过了:

Path

但是对于某些值,我得到的数字与原来的“干净”不同。

我确实做错了什么,但无法弄清楚它是什么。

示例现在如何运作:

Message.GetAll()

我希望输出为:

  UPDATE table SET ipnum = REPLACE(ip, '.', '');

1 个答案:

答案 0 :(得分:4)

您可能应该使用内置功能:

mysql> select INET_ATON('10.0.0.1');
+-----------------------+
| INET_ATON('10.0.0.1') |
+-----------------------+
|             167772161 |
+-----------------------+
1 row in set (0.00 sec)

12.15 Miscellaneous Functions

  

给出IPv4网络地址的虚线四边形表示   string,返回一个表示数字值的整数   网络字节顺序的地址(大端)。 INET_ATON()返回NULL   如果它不理解它的论点。

您可以使用INET_NTOA撤消此过程,例如:

mysql> select INET_NTOA('167772161');
+------------------------+
| INET_NTOA('167772161') |
+------------------------+
| 10.0.0.1               |
+------------------------+
1 row in set (0.00 sec)