NET_IP_NET_MASK 関数は、指定されたプレフィックス長に基づいて IPv4 または IPv6 ネットワークマスクアドレスを生成します。
構文
BINARY NET_IP_NET_MASK(BIGINT <num_output_bytes>, BIGINT <prefix_length>)パラメーター
num_output_bytes: 必須。 ネットワークマスクのバイト数を指定する BIGINT 型の値。 有効値は、IPv4 の場合は 4、IPv6 の場合は 16 です。
prefix_length: 必須。 ネットワークマスクのプレフィックス長を指定する BIGINT 型の値。 プレフィックス長は、マスク内で 1 に設定されているビット数です。 値は
[0, num_output_bytes × 8]の範囲内である必要があります。
戻り値
BINARY 型の IP アドレスを返します。 この関数を NET_IP_TO_STRING 関数と併用して、アドレスを読み取り可能なフォーマットに変換できます。 次のルールが適用されます。
num_output_bytes が IPv4 の場合は 4、IPv6 の場合は 16 でない場合、関数はエラーをレポートします。
説明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 はネットワーク関数です。 ネットワーク関数の詳細については、「ネットワーク関数」をご参照ください。