【发布时间】:2020-11-25 22:17:17
【问题描述】:
我有一个带有文本列的表格,其中包含带有子网的 ip
| ip
-------------
| 1.1.1.1/30
当您将 1.1.1.1/30 转换为您获得的 ip 列表时:
1.1.1.0
1.1.1.1
1.1.1.2
1.1.1.3
我想在这个表上运行一个 sql 并以某种方式给出一个 ips 列表作为“where”或其他任何东西的一部分,并且只有当我给出的 ips 列表包含范围的 ips 时才获取这一行行。
意义,
where ('1.1.1.0','1.1.1.1)
--> 我不会得到行
但是:
where ('1.1.1.0','1.1.1.1,1.1.1.2,1.1.1.3)
--> 我会得到那行
但是:
where ('1.1.1.0','1.1.1.1,1.1.1.2,1.1.1.3,1.1.1.4,1.1.1.5)
--> 我会得到那行
有没有办法做到这一点?
【问题讨论】:
-
请注意,/30 可以转换为位掩码,该位掩码可以与二进制形式的 IP 地址进行位与运算,以去除无关紧要的位。比较两个与掩码进行“与”运算的 IP 地址,如果它们都在指定的网络中,则它们将相等。
标签: sql postgresql ip subnet