宣言
INET6_ATON(expr)
説明
指定されたIPv6またはIPv4ネットワークアドレスを、ネットワークバイト順序(ビッグエンディアン)で表されるバイナリ文字列として返します。
数値形式のIPv6アドレスに必要なバイト数は、最大整数型よりも多いため、この関数はVARBINARYデータ型を返します。ここで、VARBINARY(16)はIPv6アドレスを、VARBINARY(4)はIPv4アドレスを表します。パラメータが有効なアドレスでない場合、NULL返します。
INET6_ATON()は、有効なパラメータに対して以下の制限を設けています。
ファイナルにZone IDを使用することはできません。例えば、fc50::3%1やfc50::3%eth1などです。
ファイナルにネットワークマスクを使用することはできません。例えば、2002:45f:3:ba::/64や198.xx.100.0/24などです。
クラスレスアドレスのみがサポートされており、クラスアドレスの値(例えば198.51.1など)は拒否されます。
ファイナルにポート番号を使用することはできません。例えば、198.xx.100.2:8082などです。
アドレスに16進数を使用することはできません。例えば、198.0xa0.1.2などです。
8進数はサポートされていません。198.xx.010.1は198.xx.8.1ではなく、198.xx.10.1と見なされます。
これらのIPv4制限は、IPv4アドレス部分を持つIPv6アドレス(例えば、IPv4互換アドレスやIPv4マッピングアドレス)にも適用されます。
INTデータ型で表されるIPv4アドレスexprをVARBINARY値で表されるIPv6アドレスに変換するには、次の式を使用します。
INET6_ATON(INET_NTOA(expr))
例
obclient> SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
+----------------------------------------------+
| HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089')) |
+----------------------------------------------+
| FDFE0000000000005A55CAFFFEFA9089 |
+----------------------------------------------+
1 row in set