今天老大给分享一个问题,记录一下:
请问根据IP地址来筛选记录的SQL语句怎么写?
老大分享一个连接:
http://www.oschina.net/code/snippet_122189_15884
1 | 由于前期设计问题,在保存ip地址时,没有存为整型,而是存成了字符串形式,在查询ip的范围区间时,遇到这样的问题: |
2 | select ip from t_ip where ip between '192.168.11.1' and '192.168.11.150' ,当末尾ip地址最后一位为三位数时,此时就查询不出数据了。 |
3 | 查了一下mysql自带有一个对ip地址做处理的函数inet_aton,作用主要是给出一个作为字符串的网络地址的 "点地址" (如127.0.0.1)表示,返回一个代表该地址数值的整数,它产生的数字是按照网略字节顺序。 |
4 |
5 | 以上语句改为: select ip from t_ip where inet_aton(ip) between inet_aton( '192.168.11.1' ) and inet_aton( '192.168.11.150' )这样就能有效比较查出数据了 |