对于IPv4和IPv6, Net函数的行为略有不同.为什么?



我正在使用BigQuery截断IPv4 &IP46 IP地址。我的意思是我想去掉可能用来识别真实人物的部分。

下面是一些演示代码:

select *,
NET.IP_TO_STRING(NET.IP_TRUNC(NET.IP_FROM_STRING(v.IPv4Address), 24)),
NET.IP_TO_STRING(NET.IP_TRUNC(NET.IP_FROM_STRING(v.IPv6Address), 64))
from (
select struct(
"254.34.78.20" as `IPV4Address`,
"2a02:c7e:3f0d:e00:48e:abff:d697:9cc2" as `IPv6Address`
) as v
)

它返回:

<表类>vf0_f1_{"IPV4Address": "254.34.78.20";IPv6Address"; "2a02:c7e:3f0d:e00:48e:abff:d697:9cc2"}254.34.78.02 a02: c7e: 3 f0d: e00::

我只是想知道为什么这些函数返回0截断的IPv4地址部分,但没有截断的部分部分的IPv6地址。

返回IPv6地址截断部分的0

IPv6地址可以有几种形式,但是规范形式要求您用双冒号(::)缩短0字段的最长运行时间。这是在您的地址2a02:c7e:3f0d:e00::的末尾,这意味着它是2a02:c7e:3f0d:e00:0:0:0:0适当缩短。

最新更新