你可以做这样的事情:
SELECT concat(LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress))), '.0') as ipClassThing,
count(1) as numberInClassTypeThing
FROM test t
GROUP BY LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress)))
见SQL Fiddle
基本上在上面,我们正在寻找的.
最后一次出现,以字符串前述它的只有一部分,然后在最后加上.0
。
与样本数据/表:
create table test (ipaddress varchar(50));
insert into test (ipaddress) values ('192.168.1.1');
insert into test (ipaddress) values ('192.168.1.0');
insert into test (ipaddress) values ('192.168.1.55/24');
insert into test (ipaddress) values ('10.1.1.1');
上述查询给出结果:
ipClassThing numberInClassTypeThing
----
10.1.1.0 1
192.168.1.0 3
我被 “阶级” 你指的是HTTP假设:// WWW。 vlsm-calc.net/ipclasses.php,你可能应该指出,如果是这样的话,或者如果不是这样的话。如果是这种情况,你只能指出一个班级。包含多个类的数据集,以及您的预期结果可以帮助其他人更好地理解您的问题。 – Kritner
我其实指的是任何东西。尝试忽略192.168.1后的所有内容。并从192.168.1.0/24的所有地址获得相同的值 – Adam