首页 > 解决方案 > IPv4-mapped IPv6 address parsing

问题描述

Does ch have some methods to convert IPv4-mapped IPv6 address looks like "::ffff:46.56.82.33" to IPv4? I found only method for converting IPv4 into IPv4-mapped IPv6.. If not what I should use for its parsing? Thanks!

标签: 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                                                 │
└─────────────────────────────────────────────────────────────┘

推荐阅读