Inet_ntoa在数据库的整个列上

时间:2009-10-16 09:50:27

标签: mysql

我在数据库中有一个表(sessions),其第一列包含数字IP地址,如:

_____________
| srcIP     |
-------------
| 167973143 |
| 167973187 |
| 167971450 |
-------------

显示我正在使用以下查询的IP地址

mysql> select srcIP from sessions;

我应该使用INET_NTOA来获取虚线的ip地址,但是用虚线ip地址显示整列的查询应该是什么?

3 个答案:

答案 0 :(得分:3)

SELECT INET_NTOA(srcIP) FROM sessions

请参阅INET_NTOA(expr)和相应的INET_ATON(expr)

答案 1 :(得分:0)

发现这个例子:inet_ntoa() - 将点号和数字字符串中的IP地址转换为结构in_addr并返回

您需要的是一个将IP地址转换回虚线形式的功能。您需要哪种功能取决于您使用的编程语言 - 它本身不能在SQL中完成!

在PHP中你可能想要使用long2ip()...

答案 2 :(得分:0)

Stefan Gehrig在MySQL中的答案显然更好,但总的来说,你可以使用:

select cast((srcIp/16777216) & 255 as varchar) + '.'
    + cast((srcIp/65536) & 255 as varchar) + '.'
    + cast((srcIp/256) & 255 as varchar) + '.'
    + cast(srcIp & 255 as varchar)
from sessions

将数字转换为IPv4地址。