【发布时间】:2021-07-23 13:57:00
【问题描述】:
ch 是否有一些方法可以将 IPv4 映射的 IPv6 地址转换为 IPv4? 我找到了将 IPv4 转换为 IPv4 映射的 IPv6 的唯一方法。 如果不是我应该用什么来解析它? 谢谢!
【问题讨论】:
标签: clickhouse
ch 是否有一些方法可以将 IPv4 映射的 IPv6 地址转换为 IPv4? 我找到了将 IPv4 转换为 IPv4 映射的 IPv6 的唯一方法。 如果不是我应该用什么来解析它? 谢谢!
【问题讨论】:
标签: clickhouse
SELECT reinterpret(
reverse(
substr( IPv6StringToNum('::ffff:46.56.82.33'), 13, 4)
),
'IPv4') AS r;
┌─r───────────┐
│ 46.56.82.33 │
└─────────────┘
SELECT extract('::ffff:46.56.82.33', '\\d+\\.\\d+\\.\\d+\\.\\d+$')
┌─extract('::ffff:46.56.82.33', '\\d+\\.\\d+\\.\\d+\\.\\d+$')─┐
│ 46.56.82.33 │
└─────────────────────────────────────────────────────────────┘
【讨论】:
不,它没有。我不确定您的用例是什么,但一种选择是剥离 ::ffff:
SELECT replaceOne('::ffff:46.56.82.33', '::ffff:', '');
(
SELECT toIPv4(replaceOne('::ffff:46.56.82.33', '::ffff:', ''));
)
【讨论】: