跳到主要内容
版本:V1.0.0

INET6_ATON

声明

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。

  • 地址中不允许使用十六进制数字,例如 198.0xa0.1.2。

  • 不支持八进制数:198.xx.010.1 被视为 198.xx.10.1,而不是 198.xx.8.1。

这些 IPv4 限制也适用于具有 IPv4 地址部分的 IPv6 地址,例如 IPv4 兼容地址或 IPv4 映射地址。

要将以 INT 数据类型表示的 IPv4 地址 expr 转换为以 VARBINARY 值表示的 IPv6 地址,请使用以下表达式:

INET6_ATON(INET_NTOA(expr))

示例

SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
+----------------------------------------------+
| HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089')) |
+----------------------------------------------+
| FDFE0000000000005A55CAFFFEFA9089 |
+----------------------------------------------+
1 row in set (0.001 sec)