我有一个列名 ip_addr,其中包含有效和无效的 IP。我希望仅对 Teradata 中的有效 IP 地址进行子集化。现在我正在使用以下内容,但它似乎不起作用:
EXECUTE
(
create multiset volatile table base as
(
select distinct int_cust_ip_addr as ip_addr
from cm11_jan14
where int_cust_ip_addr like '%.%.%.%'
)
WITH DATA PRIMARY INDEX(ip_addr)
ON COMMIT PRESERVE ROWS
)
BY TERADATA;
最佳答案
TD14+ 支持正则表达式,对于正确的 IP4 地址将返回 1:
where REGEXP_SIMILAR (int_cust_ip_addr, '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$') = 1
对于 IP6,只需搜索“regex ip6”
关于sql - 从一组列值中识别有效的 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369945/