に最終更新
IPV6_STRING_TO_NUM_OR_DEFAULT
説明
IPV6_NUM_TO_STRING の逆関数です。IP アドレス文字列を受け取り、IPv6 アドレスをバイナリ形式で返します。
構文
IPV6_STRING_TO_NUM_OR_DEFAULT(<ipv6_string>)
パラメータ
<ipv6_string>: 文字列型の IPv6 アドレス
戻り値
戻り値の型: VARCHAR(16 バイトのバイナリ)
戻り値の意味:
- IPv6 アドレスを 16 バイトのバイナリ形式で返します
- 入力が NULL の場合、すべてゼロの 16 バイトのバイナリ値を返します
- 無効な IP アドレスの場合、例外を発生させず、すべてゼロの 16 バイトのバイナリ値を返します
- 入力が有効な IPv4 文字列の場合、対応する IPv6 アドレス(
::ffff:<ipv4>)を返します
使用上の注意
- この関数は例外を発生させません。無効な入力に対しては、すべてゼロの 16 バイトのバイナリ値を返します
- IPv6 の省略表記をサポートします。IPv4 文字列は IPv6 表現にマッピングされます
- 無効な入力を許容する一括変換に適しています
例
IPv6 文字列 1111::ffff を 16 バイトのバイナリ値に変換します(十六進数で表示)。
select hex(ipv6_string_to_num_or_default('1111::ffff')) as v6;
+----------------------------------+
| v6 |
+----------------------------------+
| 1111000000000000000000000000FFFF |
+----------------------------------+
IPv4 文字列は自動的に IPv6(::ffff:<ipv4>)へマッピングされ、16 バイトのバイナリ値として返されます。
select hex(ipv6_string_to_num_or_default('192.168.0.1')) as mapped;
+----------------------------------+
| mapped |
+----------------------------------+
| 00000000000000000000FFFFC0A80001 |
+----------------------------------+
パラメータが NULL の場合、すべてゼロの 16 バイトのバイナリ値を返します
select hex(ipv6_string_to_num_or_default(NULL)) as null_result;
+----------------------------------+
| null_result |
+----------------------------------+
| 00000000000000000000000000000000 |
+----------------------------------+
無効な入力の場合、例外を発生させず、すべてゼロの 16 バイトのバイナリ値を返します。
select hex(ipv6_string_to_num_or_default('notaaddress')) as invalid;
+----------------------------------+
| invalid |
+----------------------------------+
| 00000000000000000000000000000000 |
+----------------------------------+
キーワード
IPV6_STRING_TO_NUM_OR_DEFAULT