A função NET_IP_NET_MASK gera um endereço de máscara de rede IPv4 ou IPv6 com base em um comprimento de prefixo especificado.
Sintaxe
BINARY NET_IP_NET_MASK(BIGINT <num_output_bytes>, BIGINT <prefix_length>)
Parâmetros
num_output_bytes: Obrigatório. Um valor BIGINT que especifica o número de bytes na máscara de rede. Os valores válidos são 4 para IPv4 e 16 para IPv6.
prefix_length: Obrigatório. Um valor BIGINT que especifica o comprimento do prefixo da máscara de rede. O comprimento do prefixo é o número de bits definidos como 1 na máscara. O valor deve estar no intervalo
[0, num_output_bytes × 8].
Valor de retorno
Retorna um endereço IP do tipo BINARY. É possível usar esta função com a função NET_IP_TO_STRING para converter o endereço em um formato legível. As seguintes regras se aplicam:
-
Se num_output_bytes não for 4 para IPv4 ou 16 para IPv6, a função reporta um erro.
NotaSe o parâmetro
odps.sql.udf.strict.modeestiver definido como false, a função retorna NULL. -
Se prefix_length for um valor negativo ou maior que
8 × num_output_bytes, a função reporta um erro.NotaSe o parâmetro
odps.sql.udf.strict.modeestiver definido como false, a função retorna NULL. Se num_output_bytes ou prefix_length for NULL, a função retorna NULL.
Exemplos
Exemplo 1: Exemplo básico
-- Returns =FF=FF=FF=00
SELECT NET_IP_NET_MASK(4, 24);
-- Returns =FF=FF=F0=00
SELECT NET_IP_NET_MASK(4, 20);
-- Returns =FF=FF=FF=FF
SELECT NET_IP_NET_MASK(4, 32);
-- Returns =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00
SELECT NET_IP_NET_MASK(16, 0);
-- Returns =80=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00
SELECT NET_IP_NET_MASK(16, 1);
-- Returns =FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF
SELECT NET_IP_NET_MASK(16, 128);
-- Returns NULL
SELECT NET_IP_NET_MASK(NULL, 128);
-- Returns NULL
SELECT NET_IP_NET_MASK(4, NULL);
Exemplo 2: Uso em conjunto com a função NET_IP_TO_STRING
É possível usar esta função com a função NET_IP_TO_STRING para converter um endereço IP do tipo BINARY em um formato legível.
-- Returns 255.255.255.0
SELECT NET_IP_TO_STRING(NET_IP_NET_MASK(4, 24));
-- Returns ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
SELECT NET_IP_TO_STRING(NET_IP_NET_MASK(16, 128));
-- Returns ffff:ffff:ffff:ffff::
SELECT NET_IP_TO_STRING(NET_IP_NET_MASK(16, 64));
Funções relacionadas
NET_IP_NET_MASK é uma função de rede. Para mais informações sobre funções de rede, consulte Network functions.