【发布时间】:2016-10-30 07:25:54
【问题描述】:
我正在尝试将多个 IP 地址 IPv4 和 IPv6 从 86.120.51.222 转换为 1450718174。目前正在尝试构建查询但不太了解 sql
表 ip_city_country_location
+----+---------+---------------+-------------+
| ID | ip_from | ip_to | city |
+----+---------+---------------+-------------+
| 1 | 1.2.3.4 | 1.255.255.255 | city_name_1 |
| 2 | 1.3.4.4 | 1.6.0.0 | city_name_2 |
| 3. | 1.0.0.0 | 1.5.5.5 | city_name_3 |
+----+---------+---------------+-------------+
我在想什么
UPDATE ip_city_country_location SET ip_from = INET_ATON(SELECT ip_from FROm ip_city_country_location), ip_to = INET_ATON(SELECT ip_to FROm ip_city_country_location);
注意也可以使用CASE 和WHEN AND THEN 完成,但需要另一个自动转换的解决方案,因为这是一个500万行的数据库并且需要运行它从外壳(xampp)。喜欢用sql或者smth创建函数。
预期输出
+----+---------+---------------+-------------+
| ID | ip_from | ip_to | city |
+----+---------+---------------+-------------+
| 1 | 16909060 | 33554431 | city_name_1 |
| 2 | 16974852 | 17170432 | city_name_2 |
| 3. | 16777216 | 17106181 | city_name_3 |
+----+---------+---------------+-------------+
【问题讨论】:
-
你为什么不用这样
UPDATE ip_city_country_location SET ip_from = INET_ATON(ip_from), ip_to = INET_ATON(ip_to);?