La fonction NET_IP_NET_MASK génère une adresse de masque de réseau IPv4 ou IPv6 à partir d'une longueur de préfixe spécifiée.
Syntaxe
BINARY NET_IP_NET_MASK(BIGINT <num_output_bytes>, BIGINT <prefix_length>)
Paramètres
num_output_bytes : Obligatoire. Valeur BIGINT indiquant le nombre d'octets du masque de réseau. Les valeurs valides sont 4 pour IPv4 et 16 pour IPv6.
prefix_length : Obligatoire. Valeur BIGINT indiquant la longueur du préfixe du masque de réseau. La longueur du préfixe correspond au nombre de bits définis sur 1 dans le masque. La valeur doit se situer dans la plage
[0, num_output_bytes × 8].
Valeur renvoyée
Renvoie une adresse IP de type BINARY. Vous pouvez utiliser cette fonction avec la fonction NET_IP_TO_STRING pour convertir l'adresse dans un format lisible. Les règles suivantes s'appliquent :
-
Si num_output_bytes n'est pas égal à 4 pour IPv4 ou à 16 pour IPv6, la fonction signale une erreur.
RemarqueSi le paramètre
odps.sql.udf.strict.modeest défini sur false, la fonction renvoie NULL. -
Si prefix_length est négatif ou supérieur à
8 × num_output_bytes, la fonction signale une erreur.RemarqueSi le paramètre
odps.sql.udf.strict.modeest défini sur false, la fonction renvoie NULL. Si num_output_bytes ou prefix_length est NULL, la fonction renvoie NULL.
Exemples
Exemple 1 : Exemple de base
-- 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);
Exemple 2 : Utilisation avec la fonction NET_IP_TO_STRING
Vous pouvez utiliser cette fonction conjointement avec la fonction NET_IP_TO_STRING pour convertir une adresse IP de type BINARY dans un format lisible.
-- 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));
Fonctions associées
NET_IP_NET_MASK est une fonction réseau. Pour plus d'informations sur les fonctions réseau, consultez la rubrique Fonctions réseau.