NET_IP_NET_MASK函数用于根据给定的网络掩码长度,生成对应的IPv4或IPv6网络掩码地址。
命令格式
BINARY NET_IP_NET_MASK(BIGINT <num_output_bytes>, BIGINT <prefix_length>)
参数说明
num_output_bytes:必填,BIGINT类型。指定生成的网络掩码字节数,取值为 4(对于IPv4)或16(对于IPv6)。
prefix_length:必填,BIGINT类型。指定网络掩码的前缀长度,即掩码中设置为1的位数,取值范围为
[0,num_output_bytes*8]
。
返回值说明
返回BINARY类型的IP地址,建议结合NET_IP_TO_STRING函数一起使用,以将其转换为可读格式。返回规则如下:
若num_output_bytes不为4(对于IPv4)或16(对于IPv6),返回报错。
说明当参数
odps.sql.udf.strict.mode
为false时,返回NULL。若prefix_length为负数或大于
8 * num_output_bytes
,返回报错。说明当参数
odps.sql.udf.strict.mode
为false时,返回NULL。若num_output_bytes或prefix_length为NULL,返回NULL。
使用示例
示例1:普通示例
--返回 =FF=FF=FF=00
SELECT NET_IP_NET_MASK(4, 24);
--返回 =FF=FF=F0=00
SELECT NET_IP_NET_MASK(4, 20);
--返回 =FF=FF=FF=FF
SELECT NET_IP_NET_MASK(4, 32);
--返回 =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00
SELECT NET_IP_NET_MASK(16, 0);
--返回 =80=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00
SELECT NET_IP_NET_MASK(16, 1);
--返回 =FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF
SELECT NET_IP_NET_MASK(16, 128);
--返回 NULL
SELECT NET_IP_NET_MASK(NULL, 128);
--返回 NULL
SELECT NET_IP_NET_MASK(4, NULL);
示例2:结合NET_IP_TO_STRING函数使用
与NET_IP_TO_STRING函数一起使用,将BINARY类型的IP地址转换为可读格式。
-- 返回 255.255.255.0
SELECT NET_IP_TO_STRING(NET_IP_NET_MASK(4, 24));
-- 返回 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
SELECT NET_IP_TO_STRING(NET_IP_NET_MASK(16, 128));
-- 返回 ffff:ffff:ffff:ffff::
SELECT NET_IP_TO_STRING(NET_IP_NET_MASK(16, 64));
相关函数
NET_IP_NET_MASK函数属于网络函数,更多网络相关函数请参见网络函数。
该文章对您有帮助吗?