宣言
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。
IPv4アドレスの値は、クラスレスアドレスのみをサポートします。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