Oracle SQL:有什么方法可以列出 IP 版本为 IPv6 的所有条目?

Oracle SQL: Is there any way to list all entries where IP version is IPv6?

在table中,我们有多行记录登录的IP地址。这些天我们也从 IPv6 地址获得登录。

我正在尝试找到一种方法来列出我们有 IPv6 条目的所有行。

非常感谢任何建议。

谢谢。

据推测,你可以这样做:

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

由于 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}');