将IP地址与IP范围匹配?

3

我有一个MySQL表格,设置如下:

+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| ipaddress_s   | varchar(15) | YES  | MUL | NULL    |                | 
| ipaddress_e   | varchar(16) | YES  |     | NULL    |                | 
+---------------+-------------+------+-----+---------+----------------+

其中,ipaddress_s和ipaddress_e看起来像这样:4.100.159.0-4.100.159.255

现在我是否可以获取包含给定IP地址的行?例如,给定IP地址:“4.100.159.5”,我希望返回上面的行。因此,我正在尝试查询类似于以下内容(但当然这是错误的,因为在下面的查询中我将IP地址视为字符串):

SELECT * FROM ranges WHERE ipaddress_s<"4.100.159.5" AND ipaddress_e>"4.100.159.5"

有什么建议吗?
1个回答

8

谢谢!我甚至不知道那些函数的存在! - Legend
1
如果性能是一个问题,你可以一开始就将地址存储为整数类型在数据库中。 - WhirlWind
是的..正在删除这个表并创建一个新表 :) - Legend
到了那一步时,可以使用INET_NTOA()方便地进行操作 =) - WhirlWind
使用这两个函数非常频繁 :) 你本质上简化了我的生活... 再次感谢! - Legend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接