Oracle SQL:是否可以列出IP版本为IPv6的所有条目?

时间:2018-09-18 10:48:29

标签: sql oracle ipv6

在一个表中,我们有多行记录登录的IP地址。这些天,我们也从IPv6地址登录。

我试图找到一种列出所有具有IPv6条目的行的方法。

任何建议,我们将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:2)

大概,您可以执行以下操作:

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

答案 1 :(得分:0)

因为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}');