メインコンテンツまでスキップ
バージョン: 26.x

IPV6_CIDR_TO_RANGE

ipv6_cidr_to_range

説明

IPv6アドレスとCIDRプレフィックス長に基づいて、ネットワークセグメントの最小および最大IPv6アドレスを計算し、2つのIPv6アドレスを含む構造体を返します。

構文

IPV6_CIDR_TO_RANGE(<ipv6_address>, <cidr_prefix>)

パラメータ

  • <ipv6_address>: IPv6型アドレスまたはIPv6文字列
  • <cidr_prefix>: CIDRプレフィックス長(SMALLINT型、範囲0-128)

戻り値

戻り値の型: STRUCT<min: IPv6, max: IPv6>

戻り値の意味:

  • 2つのフィールドを含む構造体を返します:
    • min: ネットワークセグメントの最小IPv6アドレス
    • max: ネットワークセグメントの最大IPv6アドレス

使用上の注意

  • CIDRプレフィックス長は0-128の範囲内である必要があります
  • IPv6型と文字列型の両方の入力をサポートします
  • 計算はネットワークマスクに基づき、最小アドレスではすべてのホストビットを0に設定し、最大アドレスではすべてのホストビットを1に設定します
  • 定数パラメータとカラムパラメータの様々な組み合わせをサポートします

/64ネットワークセグメントのアドレス範囲を計算します。

SELECT ipv6_cidr_to_range(INET6_ATON('2001:db8::1'), 64) as range;
+----------------------------------------+
| range |
+----------------------------------------+
| {"min": "2001:db8::", "max": "2001:db8::ffff:ffff:ffff:ffff"} |
+----------------------------------------+

/48ネットワークセグメントのアドレス範囲を計算します。

SELECT ipv6_cidr_to_range(INET6_ATON('2001:db8:1::1'), 48) as range;
+----------------------------------------+
| range |
+----------------------------------------+
| {"min": "2001:db8:1::", "max": "2001:db8:1:ffff:ffff:ffff:ffff"} |
+----------------------------------------+

構造体内の特定のフィールドにアクセスします。

SELECT 
ipv6_cidr_to_range(INET6_ATON('2001:db8::1'), 64).min as min_ip,
ipv6_cidr_to_range(INET6_ATON('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(INET6_ATON('2001:db8::1'), 129);
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Illegal cidr value '129'

キーワード

IPV6_CIDR_TO_RANGE