NET_IP_NET_MASK

NET_IP_NET_MASK函数用于根据给定的网络掩码长度,生成对应的IPv4IPv6网络掩码地址。

命令格式

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.modefalse时,返回NULL。

  • prefix_length为负数或大于8 * num_output_bytes,返回报错。

    说明

    当参数odps.sql.udf.strict.modefalse时,返回NULL。

  • num_output_bytesprefix_lengthNULL,返回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函数属于网络函数,更多网络相关函数请参见网络函数