假设有一张表只有一个字段。表已命名address
,并有一个名为的字段ip
,其中包含一个 IPV4 地址作为其值
样本数据
192.168.120.201
192.168.120.202
192.168.120.203
192.168.120.204
192.168.120.205
192.168.121.3
192.168.121.50
我需要在这个表上运行一个查询,它将返回COUNT
前三个八位字节的数据
预期产出
网络计数
192.168.120 5
192.168.121 3
我尝试使用SUBSTR
喜欢
SELECT SUBSTR(ip,1,10) as network,COUNT(*) as c FROM address GROUP BY network HAVING(c>1)
但问题是,SUBSTR
如果所有前 3 个八位字节每个都有 3 个数字,这只会按预期工作,但这会在前三个八位字节中每个没有 3 个数字的任何 IP 地址上中断。例如,这不适用于
192.168.0.0
192.2.3.50
192.23.4.60
问题
上述查询是否有任何替代方案适用于上述所有情况?