【发布时间】:2014-04-20 23:06:45
【问题描述】:
我将 IP 地址以打包二进制形式存储在一个表中(IPv4 为 4 个字节,IPv6 为 16 个字节)。我的问题是,有没有办法通过 SQL 搜索 IP 地址?
我使用 php (inet_pton) 将它们转换为二进制文件。我不知道有任何可用的 MySQL 函数。我的困境来自于搜索 IP 地址的一部分。假设IP地址是192.168.1.101,用户搜索101。
由于 inet_pton 不适用于像 101 这样的字符串/整数,是否有搜索打包 IP 地址的替代方法?我愿意接受建议。
【问题讨论】:
-
通过后缀搜索 IP 地址对我来说没有意义——例如,
192.168.1.101和1.2.3.101之间没有关系。你想做什么? -
@duskwuff 这是一个服务器表及其 IP 地址。用户可能不希望输入整个 IP 地址,而只是通过 IP 地址的一部分缩小结果范围。例如 192. 或 .101 或他们选择做的任何事情。
-
不过,这不太可能是一种有用的搜索方式。 IP 地址按前缀组织;您的搜索应该在此基础上进行。
-
@duskwuff,是的,还有子网……想想 IPv6 地址。如果他们想从 /64 缩小所有 IP 地址。肯定会有用的。