に最終更新
IPV6_STRING_TO_NUM
説明
IPV6_NUM_TO_STRING の逆関数です。IP アドレス文字列を受け取り、IPv6 アドレスをバイナリ形式で返します。
構文
IPV6_STRING_TO_NUM(<ipv6_string>)
パラメータ
<ipv6_string>: 文字列型の IPv6 アドレス
戻り値
戻り値の型: VARCHAR(16 バイトのバイナリ)
戻り値の意味:
- IPv6 アドレスを 16 バイトのバイナリ形式で返します
- 入力が NULL または無効な IP アドレスの場合は例外が発生します
- 入力が有効な IPv4 文字列の場合は、対応する IPv6 アドレス(
::ffff:<ipv4>)を返します
使用上の注意
- 標準的な IPv6 文字列をサポートします(省略表記や
::を使わない表記を含みます) - 入力が有効な IPv4 文字列の場合は、IPv4 マップド IPv6 表現に変換して返します
- CIDR、ポート、角括弧などの拡張形式はサポートしません
例
IPv6 文字列 1111::ffff を 16 バイトのバイナリ値に変換します(十六進数で表示)。
select hex(ipv6_string_to_num('1111::ffff')) as v6;
+----------------------------------+
| v6 |
+----------------------------------+
| 1111000000000000000000000000FFFF |
+----------------------------------+
IPv4 文字列は自動的に IPv6(::ffff:<ipv4>)にマッピングされ、16 バイトのバイナリ値として返されます。
select hex(ipv6_string_to_num('192.168.0.1')) as mapped;
+----------------------------------+
| mapped |
+----------------------------------+
| 00000000000000000000FFFFC0A80001 |
+----------------------------------+
入力が NULL の場合は例外が発生します。
select hex(ipv6_string_to_num(NULL));
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Null Input, you may consider convert it to a valid default IPv6 value like '::' first
無効な入力の場合は例外が発生します。
select hex(ipv6_string_to_num('notaaddress'));
ERROR 1105 (HY000): errCode = 2, detailMessage = (...)[INVALID_ARGUMENT]Invalid IPv6 value
キーワード
IPV6_STRING_TO_NUM