我有两张带IPV4的桌子,IPv6有起始范围和结束范围,如下所示
下面是ipv4表,我使用INET_ATON
START | END
--------------------------------
3423540224 | 3423541247
1161801728 | 1161805823
下面是ipv6表,我使用INET6_ATON
START | END
------------------------------------------------------------
0x262000001c00000000000 | 0x262000001cfffffffffffffff
0x262003210200000000000 | 0x262033211cfffffffffffffff
现在我有一个原始IP地址123.123.21.21,我想测试这个Ip是否存在于table的任何范围内。我试过下面的查询,但它返回空。
SELECT * FROM `ipv4` WHERE (INET_ATON("123.123.21.21") BETWEEN INET_NTOA(`START`) AND INET_NTOA(`END`))
另外,我想检查IPv6,我试过了
SELECT * FROM `ipv4` WHERE (INET6_ATON("2213:1880:test:0:0:0:0:0") BETWEEN INET6_NTOA(`START`) AND INET6_NTOA(`END`))
但是上面的查询总是返回空的。有人可以告诉你最好的方法吗? P.s:我只有256行CIDR范围