2012-04-18 2 views
0

Я нашел this question в отношении группировки поиска MySQL по шаблону, но мне это нужно для IP-адресов. Мне нужно сгруппировать IP-адреса с помощью первых 3 октетов, но я не совсем понимаю, как это сопровождать.Поиск в группе MySQL по REGEX для IP-адресов

Благодаря

+0

Можете ли вы привести пример результата, который вы пытаетесь достичь? Вы хотите только список уникальных первых 3 октетов, или вы после чего-то еще? – Tim

+0

@Tim - да, список первых 3 октетов для всего IP-адреса вместе со счетом каждого. –

ответ

2

MySQL SUBSTRING_INDEX function может быть полезными здесь:

drop table if exists test_ip; 

create table test_ip 
(id int unsigned not null primary key auto_increment, 
ip varchar(50) not null, 
UNIQUE KEY test_ip_uidx1 (ip)); 

insert into test_ip (ip) values ('24.21.114.4'); 
insert into test_ip (ip) values ('24.21.114.5'); 
insert into test_ip (ip) values ('24.21.114.6'); 
insert into test_ip (ip) values ('24.21.115.6'); 
insert into test_ip (ip) values ('24.21.115.7'); 
insert into test_ip (ip) values ('24.21.115.8'); 
insert into test_ip (ip) values ('24.21.116.1'); 

select substring_index(ti.ip,'.',3) as firstThreeOctet,count(*) as ipCount 
from test_ip ti 
group by substring_index(ti.ip,'.',3); 

Надеется, что это помогает.

+0

Сладкий! Вы являетесь богом среди мужчин для этого MySQL n00b! –

Смежные вопросы