sql - 从一组列值中识别有效的 IP

标签 sql teradata

我有一个列名 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/

相关文章:

sql - 如何获得 SqlCommand ExecuteNonQuery 结果?

mysql - 删除包含唯一值的所有行

sql - 插入多行 SQL Teradata

Teradata 使用当前日期查找过去 1 年的问题

sql - 只要后面没有非空值,就在组中查找空值的第一个实例 - Teradata SQL

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - 使用 NodeJS 连接到 Databricks SQL 端点

sql - Postgresql 将行转列

pyspark - 查询末尾需要 foo

java - Teradata 和 JDBC 驱动程序 - classnotfoundexception ...但它在那里?