当前位置:  开发笔记 > 编程语言 > 正文

如何过滤存储为varchar的mysql数据库中的ip地址

如何解决《如何过滤存储为varchar的mysql数据库中的ip地址》经验,为你挑选了1个好方法。

我有用户表,其中包含用户名和IP地址.

假设我需要IP地址在5.101.108.0和5.101.108.255之间的所有数据

当IP存储在varchar中时,如何为其编写查询.我是否需要使用正则表达式,因为我必须在5.101.108之后进行过滤.?

您能否提供样本解决方案,因为我无法思考如何过滤.谢谢.



1> shmosel..:

您可以使用INET_ATON()INET_NTOA()转换IP字符串和整数表示:

SELECT *
  FROM ip_addresses
 WHERE INET_ATON(ip_address) BETWEEN INET_ATON('5.101.108.0') AND INET_ATON('5.101.108.255');


但请注意,这对大型表来说会很慢,因为它必须在表中的每一行上运行`INET_ATON`计算.如果必须经常在大型表上执行此操作,最好将数据存储为"INET_ATON"以开始.(编辑:@Terry用4s击败我!)
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有