PostgreSQL,CIDR - 从cidr数组中搜索网络中的所有IP地址

时间:2014-04-15 08:04:55

标签: sql arrays postgresql search cidr

我有一个包含两个cidr数组的表。一个包含主机IP地址和第二个网络地址。

我需要编写一个执行查询的函数:

SELECT * from sometable 
WHERE ip_addr IN( 'all items from first array') OR
ip_addr << 'all item from second array'

所以基本上我需要搜索ip_addr等于第一个数组中的一个的记录,或者ip_addr包含在第二个数组的一个网络中。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您正在寻找the ANY comparison function

SELECT * 
  FROM sometable 
 WHERE (   ip_addr  = ANY ('all items from first array') 
        OR ip_addr << ANY ('all item from second array')
       )