に最終更新
IPV6_CIDR_TO_RANGE
説明
IPv6 アドレスと CIDR プレフィックス長に基づいてネットワーク範囲の最小・最大 IPv6 アドレスを計算し、二つの IPv6 アドレスを含む STRUCT を返します。
構文
IPV6_CIDR_TO_RANGE(<ipv6_address>, <cidr_prefix>)
パラメータ
<ipv6_address>: IPv6 型のアドレスまたは IPv6 文字列<cidr_prefix>: CIDR プレフィックス長(SMALLINT 型、範囲は 0~128)
戻り値
戻り値の型: STRUCT<min: IPv6, max: IPv6>
戻り値の意味:
- 次の二つのフィールドを持つ STRUCT を返します。
min: ネットワーク範囲の最小 IPv6 アドレスmax: ネットワーク範囲の最大 IPv6 アドレス
使用上の注意
- CIDR プレフィックス長は 0~128 の範囲で指定します
- IPv6 型と文字列型の入力をサポートします
- ネットワークマスクに基づいて計算します。最小アドレスではホスト部の全ビットをゼロにし、最大アドレスでは全ビットを立てます
- 定数パラメータと列パラメータのさまざまな組み合わせをサポートします
例
/64 ネットワーク範囲のアドレス範囲を計算します。
SELECT ipv6_cidr_to_range(to_ipv6('2001:db8::1'), 64) as `range`;
+---------------------------------------------------------------+
| range |
+---------------------------------------------------------------+
| {"min": "2001:db8::", "max": "2001:db8::ffff:ffff:ffff:ffff"} |
+---------------------------------------------------------------+
/48 ネットワーク範囲のアドレス範囲を計算します。
SELECT ipv6_cidr_to_range(to_ipv6('2001:db8:1::1'), 48) as `range`;
+---------------------------------------------------------------------+
| range |
+---------------------------------------------------------------------+
| {"min": "2001:db8:1::", "max": "2001:db8:1:ffff:ffff:ffff:ffff:ffff"} |
+---------------------------------------------------------------------+
STRUCT の各フィールドにアクセスします。
SELECT
ipv6_cidr_to_range(to_ipv6('2001:db8::1'), 64).min as min_ip,
ipv6_cidr_to_range(to_ipv6('2001:db8::1'), 64).max as max_ip;
+------------+-------------------------------+
| min_ip | max_ip |
+------------+-------------------------------+
| 2001:db8:: | 2001:db8::ffff:ffff:ffff:ffff |
+------------+-------------------------------+
CIDR プレフィックス長が範囲外の場合は例外が発生します。
SELECT ipv6_cidr_to_range(to_ipv6('2001:db8::1'), 129);
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Illegal cidr value '129'
キーワード
IPV6_CIDR_TO_RANGE