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函數屬於網路函數,更多網路相關函數請參見網路函數。