La fonction NET_IP_NET_MASK génère l'adresse de masque réseau IPv4 ou IPv6 correspondante à partir d'une longueur de préfixe donnée.
Syntaxe
BINARY NET_IP_NET_MASK(BIGINT <num_output_bytes>, BIGINT <prefix_length>)
Paramètres
num_output_bytes : obligatoire, type BIGINT. Nombre d'octets du masque réseau à générer. Valeurs acceptées : 4 (pour IPv4) ou 16 (pour IPv6).
prefix_length : obligatoire, type BIGINT. Longueur du préfixe du masque réseau, c'est-à-dire le nombre de bits définis sur 1 dans le masque. Plage de valeurs :
[0,num_output_bytes*8].
Valeur de retour
Renvoie une adresse IP de type BINARY. Nous vous recommandons d'utiliser cette fonction conjointement avec la fonction NET_IP_TO_STRING pour convertir le résultat en un format lisible. Règles de retour :
-
Si num_output_bytes n'est ni égal à 4 (pour IPv4) ni à 16 (pour IPv6), la fonction renvoie 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 renvoie 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 a la valeur NULL, la fonction renvoie NULL.
Exemples
Exemple 1 : Utilisation standard
--返回 =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);
Exemple 2 : Utilisation conjointe avec la fonction NET_IP_TO_STRING
Utilisez cette fonction avec la fonction NET_IP_TO_STRING pour convertir l'adresse IP de type BINARY en un format lisible.
-- 返回 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));
Fonctions associées
La fonction NET_IP_NET_MASK fait partie des fonctions réseau. Pour plus d'informations sur les autres fonctions liées au réseau, consultez la page Network Functions Overview.