メインコンテンツへスキップ
メインコンテンツへスキップ

IPv4 および IPv6 アドレスを扱う関数

IPv4CIDRToRange

導入バージョン: v20.1.0

プレフィックス長付きの IPv4 アドレス (CIDR 形式) を受け取り、そのサブネットのアドレス範囲を、最初と最後の IPv4 アドレスからなる 2 要素のタプルとして返します。 IPv6 版については IPv6CIDRToRange を参照してください。

構文

IPv4CIDRToRange(ipv4, cidr)

引数

  • ipv4 — IPv4 アドレス。IPv4 または String
  • cidr — CIDR 値。UInt8

戻り値

サブネット範囲を表す 2 つの IPv4 アドレスからなるタプルを返します。Tuple(IPv4, IPv4)

使用例

SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16);
┌─IPv4CIDRToRange(toIPv4('192.168.5.2'), 16)─┐
│ ('192.168.0.0','192.168.255.255')          │
└────────────────────────────────────────────┘

IPv4NumToString

導入バージョン: v1.1.0

32 ビット整数を IPv4 アドレスの文字列表現 (ドット区切り 10 進数表記の A.B.C.D 形式) に変換します。 入力はビッグエンディアンのバイト順として解釈されます。

構文

IPv4NumToString(num)

別名: INET_NTOA

引数

  • num — UInt32 型の数値として表現された IPv4 アドレス。UInt32

戻り値

IPv4 アドレスを表す値、またはフォーマットが無効な場合は 0 を返します。String

使用例

IPv4NumToString(3232235521)
192.168.0.1

IPv4NumToStringClassC

導入バージョン: v1.1.0

32 ビット整数を、IPv4 アドレスの文字列表現 (ドット区切りの 10 進表記 (A.B.C.D 形式) ) に変換します。 IPv4NumToString と似ていますが、最後のオクテットの代わりに xxx を使用します。

構文

IPv4NumToStringClassC(num)

引数

  • num — UInt32 型の数値として表された IPv4 アドレス。UInt32

戻り値

最後のオクテットを xxx に置き換えた IPv4 アドレス文字列を返します。String

集約を伴う基本的な例

SELECT
    IPv4NumToStringClassC(ClientIP) AS k,
    count() AS c
FROM test.hits
GROUP BY k
ORDER BY c DESC
LIMIT 10
┌─k──────────────┬─────c─┐
│ 83.149.9.xxx   │ 26238 │
│ 217.118.81.xxx │ 26074 │
│ 213.87.129.xxx │ 25481 │
│ 83.149.8.xxx   │ 24984 │
│ 217.118.83.xxx │ 22797 │
│ 78.25.120.xxx  │ 22354 │
│ 213.87.131.xxx │ 21285 │
│ 78.25.121.xxx  │ 20887 │
│ 188.162.65.xxx │ 19694 │
│ 83.149.48.xxx  │ 17406 │
└────────────────┴───────┘

IPv4StringToNum

導入バージョン: v1.1.0

ドット区切り 10進表記 (A.B.C.D 形式) の IPv4 アドレス文字列を、対応する 32 ビット整数表現に変換します (IPv4NumToString の逆の変換) 。 IPv4 アドレスの形式が不正な場合は、例外がスローされます。

構文

IPv4StringToNum(string)

別名: INET_ATON

引数

  • string — IPv4 アドレス文字列。String

戻り値

IPv4 アドレスを返します。UInt32

使用例

IPv4StringToNum('192.168.0.1')
3232235521

IPv4StringToNumOrDefault

導入バージョン: v22.3.0

ドット区切り 10 進表記 (A.B.C.D 形式) の IPv4 アドレス文字列を対応する 32 ビット整数値に変換します。IPv4 アドレスの形式が無効な場合は 0 を返します。

構文

IPv4StringToNumOrDefault(string)

引数

  • string — IPv4 アドレス文字列。String

戻り値

IPv4 アドレスを返します。無効な場合は 0 を返します。UInt32

無効なアドレスの例

SELECT
    IPv4StringToNumOrDefault('127.0.0.1') AS valid,
    IPv4StringToNumOrDefault('invalid') AS invalid;
┌──────valid─┬─invalid─┐
│ 2130706433 │       0 │
└────────────┴─────────┘

IPv4StringToNumOrNull

導入バージョン: v22.3.0

32ビット整数をドット区切り10進表記 (A.B.C.D 形式) の IPv4 アドレス文字列表現に変換しますが、IPv4 アドレスの形式が不正な場合には NULL を返します。

構文

IPv4StringToNumOrNull(string)

引数

  • string — IPv4 アドレス文字列。String

戻り値

IPv4 アドレスを返します。無効なアドレスの場合は NULL を返します。Nullable(UInt32)

無効なアドレスの例

SELECT
IPv4StringToNumOrNull('127.0.0.1') AS valid,
IPv4StringToNumOrNull('invalid') AS invalid;
┌──────valid─┬─invalid─┐
│ 2130706433 │    ᴺᵁᴸᴸ │
└────────────┴─────────┘

IPv4ToIPv6

導入バージョン: v1.1.0

ビッグエンディアンの 32 ビット整数を IPv4 アドレスとして解釈し、それを対応する IPv6 アドレスに変換して FixedString(16) 形式で表現します。

構文

IPv4ToIPv6(x)

引数

  • x — IPv4 アドレス。UInt32

戻り値

IPv6 アドレスをバイナリ形式で返します。FixedString(16)

使用例

SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr;
┌─addr───────────────┐
│ ::ffff:192.168.0.1 │
└────────────────────┘

IPv6CIDRToRange

導入バージョン: v20.1.0

CIDR プレフィックス長付きの IPv6 アドレスを受け取り、そのサブネット内のアドレス範囲を、最小アドレスと最大アドレスからなる 2 つの IPv6 値のタプルとして返します。 IPv4 版については IPv4CIDRToRange を参照してください。

構文

IPv6CIDRToRange(ipv6, cidr)

引数

  • ipv6 — IPv6 アドレス。IPv6 または String
  • cidr — CIDR 値。UInt8

戻り値

サブネットの範囲を表す 2 つの IPv6 アドレスを含むタプルを返します。Tuple(IPv6, IPv6)

使用例

SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32);
┌─IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32)─┐
│ ('2001:db8::','2001:db8:ffff:ffff:ffff:ffff:ffff:ffff')                │
└────────────────────────────────────────────────────────────────────────┘

IPv6NumToString

導入: v1.1.0

バイナリ形式 (FixedString(16)) の IPv6 アドレスを、標準的な文字列表現に変換します。 IPv4 マップド IPv6 アドレスは ::ffff:111.222.33.44 の形式で表示されます。

構文

IPv6NumToString(x)

別名: INET6_NTOA

引数

戻り値

テキスト形式の IPv6 アドレス文字列を返します。String

使用例

SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), 16)) AS addr;
┌─addr─────────┐
│ 2a02:6b8::11 │
└──────────────┘

ヒット分析における IPv6

SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today() AND substring(ClientIP6, 1, 12) != unhex('00000000000000000000FFFF')
GROUP BY k
ORDER BY c DESC
LIMIT 10
┌─IPv6NumToString(ClientIP6)──────────────┬─────c─┐
│ 2a02:2168:aaa:bbbb::2                   │ 24695 │
│ 2a02:2698:abcd:abcd:abcd:abcd:8888:5555 │ 22408 │
│ 2a02:6b8:0:fff::ff                      │ 16389 │
│ 2a01:4f8:111:6666::2                    │ 16016 │
│ 2a02:2168:888:222::1                    │ 15896 │
│ 2a01:7e00::ffff:ffff:ffff:222           │ 14774 │
│ 2a02:8109:eee:ee:eeee:eeee:eeee:eeee    │ 14443 │
│ 2a02:810b:8888:888:8888:8888:8888:8888  │ 14345 │
│ 2a02:6b8:0:444:4444:4444:4444:4444      │ 14279 │
│ 2a01:7e00::ffff:ffff:ffff:ffff          │ 13880 │
└─────────────────────────────────────────┴───────┘

IPv4 マップド IPv6 アドレス

SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today()
GROUP BY k
ORDER BY c DESC
LIMIT 10
┌─IPv6NumToString(ClientIP6)─┬──────c─┐
│ ::ffff:94.26.111.111       │ 747440 │
│ ::ffff:37.143.222.4        │ 529483 │
│ ::ffff:5.166.111.99        │ 317707 │
│ ::ffff:46.38.11.77         │ 263086 │
│ ::ffff:79.105.111.111      │ 186611 │
│ ::ffff:93.92.111.88        │ 176773 │
│ ::ffff:84.53.111.33        │ 158709 │
│ ::ffff:217.118.11.22       │ 154004 │
│ ::ffff:217.118.11.33       │ 148449 │
│ ::ffff:217.118.11.44       │ 148243 │
└────────────────────────────┴────────┘

IPv6StringToNum

導入バージョン: v1.1.0

IPv6 アドレスを標準テキスト表現からバイナリ形式 (FixedString(16)) に変換します。 ::ffff:111.222.33.44. の形式の IPv4 マップド IPv6 アドレスを受け付けます。 IPv6 アドレスの形式が無効な場合は、例外がスローされます。

入力文字列に有効な IPv4 アドレスが含まれている場合、対応する IPv6 アドレスを返します。 HEX 表記は大文字・小文字のどちらでもかまいません。

構文

IPv6StringToNum(string)

別名: INET6_ATON

引数

  • string — IPv6 アドレス文字列。String

戻り値

IPv6 アドレスをバイナリ形式で返します。FixedString(16)

基本的な例

SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr;
┌─addr───────┬─cutIPv6(IPv6StringToNum(addr), 0, 0)─┐
│ notaddress │ ::                                   │
│ 127.0.0.1  │ ::ffff:127.0.0.1                     │
│ 1111::ffff │ 1111::ffff                           │
└────────────┴──────────────────────────────────────┘

IPv6StringToNumOrDefault

導入バージョン: v22.3.0

IPv6 アドレスを、その標準的なテキスト表現からバイナリ形式 (FixedString(16)) に変換します。 ::ffff:111.222.33.44. 形式の IPv4 マップド IPv6 アドレスを受け付けます。 IPv6 アドレスの形式が無効な場合は、デフォルト値 :: を返します。

構文

IPv6StringToNumOrDefault(string)

引数

  • string — IPv6 アドレスを表す文字列。String

戻り値

バイナリ形式の IPv6 アドレス、または無効な場合はゼロ埋めされた FixedString(16)。FixedString(16)

無効なアドレスを指定した基本的な例

SELECT
    IPv6NumToString(IPv6StringToNumOrDefault('2001:db8::1')) AS valid,
    IPv6NumToString(IPv6StringToNumOrDefault('invalid')) AS invalid;
┌─valid───────┬─invalid─┐
│ 2001:db8::1 │ ::      │
└─────────────┴─────────┘

IPv6StringToNumOrNull

導入されたバージョン: v22.3.0

IPv6アドレスを標準的なテキスト表現からバイナリ形式 (FixedString(16)) に変換します。 ::ffff:111.222.33.44. 形式の、IPv4アドレスをマッピングしたIPv6アドレスを受け付けます。 IPv6アドレスの形式が不正な場合は、NULL を返します。

構文

IPv6StringToNumOrNull(string)

引数

  • string — IPv6 アドレス文字列。String

返される値

IPv6 アドレスをバイナリ形式で返します。無効な場合には NULL を返します。Nullable(FixedString(16))

無効なアドレスを使った基本的な例

SELECT
    IPv6NumToString(IPv6StringToNumOrNull('2001:db8::1')) AS valid,
    IPv6StringToNumOrNull('invalid') AS invalid;
┌─valid───────┬─invalid─┐
│ 2001:db8::1 │    ᴺᵁᴸᴸ │
└─────────────┴─────────┘

cutIPv6

導入バージョン: v1.1.0

IPv6 アドレスをバイナリ形式で表現した FixedString(16) 型の値を受け取ります。 指定したバイト数だけ切り詰めたアドレスをテキスト形式で返します。

構文

cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)

引数

  • x — バイナリ形式の IPv6 アドレス。FixedString(16) または IPv6
  • bytesToCutForIPv6 — IPv6 に対して削除するバイト数。UInt8
  • bytesToCutForIPv4 — IPv4 に対して削除するバイト数。UInt8

返り値

指定されたバイト数を削除したテキスト形式の IPv6 アドレスを含む文字列を返します。String

使用例

WITH
    IPv6StringToNum('2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D') AS ipv6,
    IPv4ToIPv6(IPv4StringToNum('192.168.0.1')) AS ipv4
SELECT
    cutIPv6(ipv6, 2, 0),
    cutIPv6(ipv4, 0, 2)
┌─cutIPv6(ipv6, 2, 0)─────────────────┬─cutIPv6(ipv4, 0, 2)─┐
│ 2001:db8:ac10:fe01:feed:babe:cafe:0 │ ::ffff:192.168.0.0  │
└─────────────────────────────────────┴─────────────────────┘

isIPAddressInRange

導入バージョン: v21.4.0

Classless Inter-Domain Routing (CIDR) 表記で表されているネットワークに、指定した IP アドレスが含まれているかどうかを判定します。

この関数は、文字列として表現された IPv4 および IPv6 のアドレス (およびネットワーク) の両方を受け付けます。アドレスと CIDR の IP のバージョンが一致しない場合は 0 を返します。

構文

isIPAddressInRange(address, prefix)

引数

  • address — IPv4 または IPv6 アドレス。String
  • prefix — CIDR 表記の IPv4 または IPv6 ネットワークプレフィックス。String

戻り値

アドレスと CIDR の IP バージョンが一致する場合は 1 を返し、それ以外の場合は 0 を返します。UInt8

範囲内の IPv4 アドレス

SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8')
1

IPv4 アドレスが範囲外です

SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16')
0

IPv6 アドレスが範囲外です

SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128')
0

isIPv4String

導入バージョン: v21.1.0

入力文字列が IPv4 アドレスかどうかを判定します。 IPv6 版については isIPv6String を参照してください。

構文

isIPv4String(string)

引数

  • string — チェック対象の IP アドレス文字列。String

戻り値

string が IPv4 アドレスであれば 1、それ以外の場合は 0 を返します。UInt8

使用例

SELECT addr, isIPv4String(addr)
FROM(
SELECT ['0.0.0.0', '127.0.0.1', '::ffff:127.0.0.1'] AS addr
)
ARRAY JOIN addr;
┌─addr─────────────┬─isIPv4String(addr)─┐
│ 0.0.0.0          │                  1 │
│ 127.0.0.1        │                  1 │
│ ::ffff:127.0.0.1 │                  0 │
└──────────────────┴────────────────────┘

isIPv6String

導入バージョン: v21.1.0

入力文字列が IPv6 アドレスかどうかを判定します。 IPv4 アドレス向けの関数については isIPv4String を参照してください。

構文

isIPv6String(string)

引数

  • string — 判定対象の IP アドレス文字列。String

返される値

string が IPv6 アドレスであれば 1、それ以外の場合は 0 を返します。UInt8

使用例

SELECT addr, isIPv6String(addr)
FROM(SELECT ['::', '1111::ffff', '::ffff:127.0.0.1', '127.0.0.1'] AS addr)
ARRAY JOIN addr;
┌─addr─────────────┬─isIPv6String(addr)─┐
│ ::               │                  1 │
│ 1111::ffff       │                  1 │
│ ::ffff:127.0.0.1 │                  1 │
│ 127.0.0.1        │                  0 │
└──────────────────┴────────────────────┘

toIPv4

導入バージョン: v20.1.0

文字列または UInt32 型で表現された IPv4 アドレスを IPv4 型に変換します。 IPv4StringToNum および IPv4NumToString 関数と似ていますが、引数として文字列型と符号なし整数型の両方をサポートします。

構文

toIPv4(x)

引数

戻り値

IPv4 アドレスを返します。IPv4

使用例

SELECT toIPv4('171.225.130.45');
┌─toIPv4('171.225.130.45')─┐
│ 171.225.130.45           │
└──────────────────────────┘

IPv4StringToNum 関数および IPv4NumToString 関数との比較

WITH
    '171.225.130.45' AS IPv4_string
SELECT
    hex(IPv4StringToNum(IPv4_string)),
    hex(toIPv4(IPv4_string))
┌─hex(IPv4StringToNum(IPv4_string))─┬─hex(toIPv4(IPv4_string))─┐
│ ABE1822D                          │ ABE1822D                 │
└───────────────────────────────────┴──────────────────────────┘

整数からの変換

SELECT toIPv4(2130706433);
┌─toIPv4(2130706433)─┐
│ 127.0.0.1          │
└────────────────────┘

toIPv4OrDefault

導入バージョン: v22.3.0

IPv4 アドレスを表す文字列または UInt32 形式の値を IPv4 型に変換します。 IPv4 アドレスの形式が不正な場合は 0.0.0.0 (0 IPv4) または指定されたデフォルトの IPv4 アドレスを返します。

構文

toIPv4OrDefault(string[, default])

引数

  • string — 変換対象の IP アドレス文字列。String
  • default — 省略可。文字列が不正な IPv4 アドレスの場合に返す値。IPv4

戻り値

文字列を変換して得られる対応する IPv4 アドレス、または変換に失敗した場合はデフォルト値を返します。IPv4

有効な IPv4 文字列と無効な IPv4 文字列

WITH
    '192.168.1.1' AS valid_IPv4_string,
    '999.999.999.999' AS invalid_IPv4_string,
    'not_an_ip' AS malformed_string
SELECT
    toIPv4OrDefault(valid_IPv4_string) AS valid,
    toIPv4OrDefault(invalid_IPv4_string) AS default_value,
    toIPv4OrDefault(malformed_string, toIPv4('8.8.8.8')) AS provided_default;
┌─valid─────────┬─default_value─┬─provided_default─┐
│ 192.168.1.1   │ 0.0.0.0       │ 8.8.8.8          │
└───────────────┴───────────────┴──────────────────┘

toIPv4OrNull

導入バージョン: v22.3.0

入力値を IPv4 型の値に変換しますが、エラーが発生した場合は NULL を返します。 toIPv4 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。

サポートされる引数:

  • ドット区切り 10 進表記による IPv4 アドレスの文字列表現。
  • IPv4 アドレスの整数表現。

サポートされない引数 (NULL を返す) :

  • 無効な IP アドレス形式。
  • IPv6 アドレス。
  • 範囲外の値。
  • 書式の不正なアドレス。

構文

toIPv4OrNull(x)

引数

  • x — IPv4 アドレスの文字列または整数による表現。String または Integer

返り値

成功した場合は IPv4 アドレスを返し、それ以外の場合は NULL を返します。IPv4 または NULL

使用例

SELECT
    toIPv4OrNull('192.168.1.1') AS valid_ip,
    toIPv4OrNull('invalid.ip') AS invalid_ip
┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │       ᴺᵁᴸᴸ │
└─────────────┴────────────┘

toIPv4OrZero

導入バージョン: v23.1.0

入力値を IPv4 型の値に変換しますが、エラーが発生した場合は IPv4 のゼロアドレスを返します。 toIPv4 と同様ですが、変換エラーが発生した場合、例外をスローする代わりに IPv4 のゼロアドレス (0.0.0.0) を返します。

サポートされる引数:

  • ドット区切り 10 進表記の IPv4 アドレスの文字列表現。
  • IPv4 アドレスの整数表現。

サポートされない引数 (ゼロの IPv4 アドレスを返す) :

  • 不正な IP アドレス形式。
  • IPv6 アドレス。
  • 範囲外の値。

構文

toIPv4OrZero(x)

引数

  • x — IPv4 アドレスの文字列表現または整数表現。String または Integer

戻り値

成功した場合は IPv4 アドレスを返し、そうでない場合はゼロ値の IPv4 アドレス (0.0.0.0) を返します。IPv4

使用例

SELECT
    toIPv4OrZero('192.168.1.1') AS valid_ip,
    toIPv4OrZero('invalid.ip') AS invalid_ip
┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │ 0.0.0.0    │
└─────────────┴────────────┘

toIPv6

導入バージョン: v20.1.0

IPv6 アドレスを表す文字列または UInt128 形式の値を IPv6 型に変換します。 文字列の場合、IPv6 アドレスの形式が無効なときは空の値を返します。 IPv6 アドレスをバイナリ形式 (すなわち FixedString(16)) に相互変換する IPv6StringToNum および IPv6NumToString 関数と同様です。

入力文字列に有効な IPv4 アドレスが含まれている場合、その IPv4 アドレスに対応する IPv6 アドレスが返されます。

構文

toIPv6(x)

引数

戻り値

IPv6 アドレスを返します。IPv6

使用例

WITH '2001:438:ffff::407d:1bc1' AS IPv6_string
SELECT
    hex(IPv6StringToNum(IPv6_string)),
    hex(toIPv6(IPv6_string));
┌─hex(IPv6StringToNum(IPv6_string))─┬─hex(toIPv6(IPv6_string))─────────┐
│ 20010438FFFF000000000000407D1BC1  │ 20010438FFFF000000000000407D1BC1 │
└───────────────────────────────────┴──────────────────────────────────┘

IPv4 から IPv6 へのマッピング

SELECT toIPv6('127.0.0.1');
┌─toIPv6('127.0.0.1')─┐
│ ::ffff:127.0.0.1    │
└─────────────────────┘

toIPv6OrDefault

導入バージョン: v22.3.0

文字列または IPv6 アドレスの UInt128 形式を IPv6 型に変換します。 IPv6 アドレスの形式が無効な場合は、:: (全ゼロの IPv6 アドレス) または指定されたデフォルトの IPv6 を返します。

構文

toIPv6OrDefault(string[, default])

引数

  • string — 変換する IP アドレス文字列。 - default — 省略可能。string の形式が不正な場合に返す値。

戻り値

IPv6 アドレスを返します。string 引数の形式が不正な場合は、:: または指定された省略可能な default を返します。IPv6

有効な IPv6 文字列と無効な IPv6 文字列

WITH
    '2001:0db8:85a3:0000:0000:8a2e:0370:7334' AS valid_IPv6_string,
    '2001:0db8:85a3::8a2e:370g:7334' AS invalid_IPv6_string,
    'not_an_ipv6' AS malformed_string
SELECT
    toIPv6OrDefault(valid_IPv6_string) AS valid,
    toIPv6OrDefault(invalid_IPv6_string) AS default_value,
    toIPv6OrDefault(malformed_string, toIPv6('::1')) AS provided_default;
┌─valid──────────────────────────────────┬─default_value─┬─provided_default─┐
│ 2001:db8:85a3::8a2e:370:7334           │ ::            │ ::1              │
└────────────────────────────────────────┴───────────────┴──────────────────┘

toIPv6OrNull

導入バージョン: v22.3.0

入力値を型 IPv6 の値に変換しますが、エラーが発生した場合には NULL を返します。 toIPv6 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。

サポートされる引数:

  • 標準表記による IPv6 アドレスの文字列表現。
  • IPv4-mapped IPv6 に変換される IPv4 アドレスの文字列表現。
  • IPv6 アドレスのバイナリ表現。

サポートされない引数 (NULL を返す) :

  • 無効な IP アドレス形式。
  • 不正な形式の IPv6 アドレス。
  • 範囲外の値。
  • 無効な表記。

構文

toIPv6OrNull(x)

引数

  • x — IPv6 または IPv4 アドレスの文字列表現。String

戻り値

成功時は IPv6 アドレスを返し、失敗時は NULL を返します。IPv6 または NULL

使用例

SELECT
    toIPv6OrNull('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
    toIPv6OrNull('invalid::ip') AS invalid_ipv6
┌─valid_ipv6──────────────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334        │         ᴺᵁᴸᴸ │
└─────────────────────────────────────┴──────────────┘

toIPv6OrZero

導入バージョン: v23.1.0

入力値を IPv6 型の値に変換しますが、エラー発生時にはゼロの IPv6 アドレスを返します。 toIPv6 に似ていますが、変換エラー時に例外をスローする代わりにゼロの IPv6 アドレス (::) を返します。

サポートされる引数:

  • 標準表記での IPv6 アドレスの文字列表現。
  • IPv4 アドレスの文字列表現 (IPv4-mapped IPv6 に変換) 。
  • IPv6 アドレスのバイナリ表現。

サポートされない引数 (ゼロの IPv6 アドレスを返す) :

  • 無効な IP アドレス形式。
  • 不正な形式の IPv6 アドレス。
  • 範囲外の値。

構文

toIPv6OrZero(x)

引数

  • x — IPv6 または IPv4 アドレスを表す文字列。String

戻り値

成功した場合は IPv6 アドレスを返し、失敗した場合はゼロ値の IPv6 アドレス (::) を返します。IPv6

使用例

SELECT
    toIPv6OrZero('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
    toIPv6OrZero('invalid::ip') AS invalid_ipv6
┌─valid_ipv6──────────────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334        │ ::           │
└─────────────────────────────────────┴──────────────┘