SQL 中的 IP 范围

Oli*_*ver 5 ip hex range google-bigquery

我有数十万个 IP,并且想要确定哪些 IP 在某个范围内。范围:

64.233.160.0 /  8192
66.102.0.0 / 4096
66.249.64.0 / 8192
72.14.192.0 / 16384
74.125.0.0  / 65536
209.85.128.0 / 32768
216.239.32.0 / 8192
Run Code Online (Sandbox Code Playgroud)

所以我将这些范围转换为以下内容:

64.233.160.0    -   64.233.192.0
66.102.0.0      -   66.102.16.0
66.249.64.0     -   66.249.96.0
72.14.192.0     -   72.15.0.0
74.125.0.0      -   74.126.0.0
209.85.128.0    -   209.86.0.0
216.239.32.0    -   216.239.64.0
Run Code Online (Sandbox Code Playgroud)

所以现在我想查询 IP 地址是否在这些范围内。SQL 不会理解这些八位字节,所以我不知道该怎么做。

可以使用一些 Hex2Dec/Dec2Hex 转换吗?

我想这应该是以前做过的事情,我确信我不是第一个尝试使用 IP 范围识别列表中特定 IP 的人。

我将对多个 IP 地址进行查找,因此有些可能是 20.0.1.123,另一个可能是 124.123.123.1,即八位位组的格式不会相同

Pen*_*m10 3

您可以使用IP 功能来实现此目的:

PARSE_IP('64.233.160.0') returns 1089052672
Run Code Online (Sandbox Code Playgroud)

然后你可以将它们包装在 BETWEEN 状态。