V6_SUBNETN
从变长二进制或字母数字 IPv6 地址计算无类别域间路由 (CIDR) 格式的子网地址。
行为类型
不可变语法
V6_SUBNETN ( address, subnet-size)
参数
- address
- IPv6 地址为 VARBINARY 或 VARCHAR。传入格式决定输出的日期类型。如果传入 VARBINARY 地址,则 V6_SUBNETN 返回 VARBINARY 值。如果传入一个 VARCHAR 值,则返回 VARCHAR。
- subnet‑size
- 子网的大小为 INTEGER。
注意
下述语法屏蔽 BINARY IPv6 地址 B
,使得 S
最左侧的 N 位形成子网地址,而剩余最右侧的位被清除。
V6_SUBNETN
在 B
右侧填充 0 至 16 字节 (若必要)并屏蔽 B
,保留其 N 位子网前缀。
=> V6_SUBNETN(VARBINARY B, INT8 N) -> VARBINARY(16) S
若 B
是 NULL 或长于 16 字节,或者 N
不在 0 到 128 之间(包含),则结果为 NULL。
S = [B]/N
用无类别域间路由 符号(CIDR 符号)表示。
下述语法屏蔽字母数字 IPv6 地址 A
,使得最左侧的 N
位形成子网地址,而剩余最右侧的位被清除。
=> V6_SUBNETN(VARCHAR A, INT8 N) -> V6_SUBNETN(V6_ATON(A), N) -> VARBINARY(16) S
示例
这个示例在使用 V6_ATON 将 VARCHAR 字符串转换为 VARBINARY 之后返回 VARBINARY:
=> SELECT V6_SUBNETN(V6_ATON('2001:db8::8:800:200c:417a'), 28);
v6_subnetn
---------------------------------------------------------------
\001\015\260\000\000\000\000\000\000\000\000\000\000\000\000