我正在使用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
)
它返回:
<表类>v f0_ f1_ {"IPV4Address": "254.34.78.20";IPv6Address"; "2a02:c7e:3f0d:e00:48e:abff:d697:9cc2"} 254.34.78.0 2 a02: c7e: 3 f0d: e00:: 表类>
我只是想知道为什么这些函数返回0截断的IPv4地址部分,但没有截断的部分部分的IPv6地址。
它是返回IPv6地址截断部分的0
。
IPv6地址可以有几种形式,但是规范形式要求您用双冒号(::
)缩短0
字段的最长运行时间。这是在您的地址2a02:c7e:3f0d:e00::
的末尾,这意味着它是2a02:c7e:3f0d:e00:0:0:0:0
适当缩短。