メインコンテンツまでスキップ
に最終更新

IPV4_CIDR_TO_RANGE

説明​

IPv4 アドレスと CIDR プレフィックス長からネットワークの最小・最大 IPv4 アドレスを計算し、両方の IPv4 アドレスを含む構造体を返します。

構文​

IPV4_CIDR_TO_RANGE(<ipv4_address>, <cidr_prefix>)

パラメータ​

パラメータ説明
<ipv4_address>IPv4 アドレスです。アドレス文字列を IPv4 に変換するには TO_IPV4 を使用します。INET_ATON の戻り値は BIGINT なので、このパラメータには使用できません。
<cidr_prefix>CIDR プレフィックス長です。SMALLINT 型で、範囲は 0~32 です。

戻り値​

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

どちらかのパラメータが NULL の場合は NULL を返します。

戻り値の意味:

  • 次の両フィールドを含む構造体を返します。
    • min: ネットワークの最小 IPv4 アドレス。
    • max: ネットワークの最大 IPv4 アドレス。

使用上の注意​

  • CIDR プレフィックス長は 0~32 の範囲で指定する必要があります。
  • ネットワークマスクに基づいて計算します。最小アドレスではホスト部のすべてのビットをゼロ、最大アドレスでは一に設定します。
  • 定数と列を組み合わせたパラメータ指定に対応します。

例​

/24 ネットワークのアドレス範囲を計算する。

SELECT ipv4_cidr_to_range(TO_IPV4('192.168.1.1'), 24) as range;
+------------------------------------------------+
| range |
+------------------------------------------------+
| {"min": "192.168.1.0", "max": "192.168.1.255"} |
+------------------------------------------------+

/16 ネットワークのアドレス範囲を計算する。

SELECT ipv4_cidr_to_range(TO_IPV4('10.0.0.1'), 16) as range;
+----------------------------------------------+
| range |
+----------------------------------------------+
| {"min": "10.0.0.0", "max": "10.0.255.255"} |
+----------------------------------------------+

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

SELECT 
ipv4_cidr_to_range(TO_IPV4('172.16.1.1'), 24).min as min_ip,
ipv4_cidr_to_range(TO_IPV4('172.16.1.1'), 24).max as max_ip;
+------------+--------------+
| min_ip | max_ip |
+------------+--------------+
| 172.16.1.0 | 172.16.1.255 |
+------------+--------------+

範囲外の CIDR プレフィックス長は例外を発生させる。

SELECT ipv4_cidr_to_range(TO_IPV4('192.168.1.1'), 33);
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Illegal cidr value '33'

NULL 入力:

SELECT ipv4_cidr_to_range(NULL, 24) AS null_address,
ipv4_cidr_to_range(TO_IPV4('192.168.1.1'), NULL) AS null_prefix;
+--------------+-------------+
| null_address | null_prefix |
+--------------+-------------+
| NULL | NULL |
+--------------+-------------+

キーワード​

IPV4_CIDR_TO_RANGE