Oracle SQL: есть ли способ перечислить все записи, где версия IP - IPv6? - PullRequest
0 голосов
/ 18 сентября 2018

В таблице у нас есть несколько строк, в которых записывается IP-адрес входа в систему. В эти дни мы также получаем логины с адреса IPv6.

Я пытаюсь найти способ перечислить все строки, в которых есть записи IPv6.

Любые предложения с благодарностью.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

, поскольку IPv6-адреса имеют размер 128 бит с 4 цифрами после каждого двоеточия, которое мы можем получить следующим образом:

create table ns_tab3 (val varchar(100));
insert into ns_tab3 values('2002:2002:2002:2002:2002:2002:2002:2002'); 
insert into ns_tab3 values('2002:2432:2432:2543:2974:2002:2002:2002'); 
insert into ns_tab3 values('2002:2002:2002:2002:2002:2002:2002:2432'); 
insert into ns_tab3 values('2002:2002:2002:2002:2002:2002:2002:1920'); 
insert into ns_tab3 values('2002:2002:2002:2002:2002:2002:2002:0201'); 
select * from ns_tab3;

select * from ns_tab3 where regexp_like(val,'[0-9]{4}:[0-9]{4}:[0-9]{4}:[0-9]{4}:[0- 
9]{4}:[0-9]{4}:[0-9]{4}:[0-9]{4}');
0 голосов
/ 18 сентября 2018

Предположительно, вы могли бы сделать что-то вроде этого:

select t.*
from t
where not regexp_like(ip, '[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}')

Или проще:

select t.*
from t
where ip like '%:%'  -- ipv6 contains colons
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...