본문으로 바로가기
본문으로 바로가기

IPv4 및 IPv6 주소를 다루는 함수

IPv4CIDRToRange

도입된 버전: v20.1

CIDR(Classless Inter-Domain Routing) 프리픽스(prefix) 길이가 포함된 IPv4 주소를 입력으로 받아, 해당 서브넷의 주소 범위를 해당 서브넷의 첫 번째 주소와 마지막 주소로 이루어진 두 개의 IPv4 값 튜플로 반환합니다. IPv6 버전은 IPv6CIDRToRange를 참조하십시오.

구문

IPv4CIDRToRange(ipv4, cidr)

인수

반환값

서브넷 범위를 나타내는 두 개의 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

32비트 정수를 점으로 구분된 십진 표기(A.B.C.D 형식)의 IPv4 주소 문자열로 변환합니다. 입력 값을 빅 엔디언(big-endian) 바이트 순서로 해석합니다.

구문

IPv4NumToString(num)

별칭: INET_NTOA

인수

  • num — UInt32 숫자로 표현된 IPv4 주소. UInt32

반환 값

MAC 주소를 나타내는 값을 반환하며, 형식이 잘못된 경우 0을 반환합니다. String

예시

사용 예시

IPv4NumToString(3232235521)
192.168.0.1

IPv4NumToStringClassC

도입 버전: v1.1

32비트 정수를 점으로 구분된 10진수 표기(A.B.C.D 형식)의 IPv4 주소 문자열로 변환하며, 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

점으로 구분된 십진수 표기(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

점으로 구분된 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

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

(빅 엔디언) 32비트 숫자를 IPv4 주소로 해석한 뒤, 이를 FixedString(16) 형식의 대응하는 IPv6 주소로 해석합니다.

구문

IPv4ToIPv6(x)

인수

반환값

IPv6 주소를 이진 형식으로 반환합니다. FixedString(16)

예제

사용 예제

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

IPv6CIDRToRange

도입 버전: v20.1

CIDR(Classless Inter-Domain Routing) 프리픽스(prefix) 길이가 포함된 IPv6 주소를 입력으로 받아, 해당 서브넷의 주소 범위를 두 개의 IPv6 값(해당 서브넷에서 가장 작은 주소와 가장 큰 주소)으로 이루어진 튜플로 반환합니다. IPv4 버전에 대해서는 IPv4CIDRToRange를 참조하십시오.

구문

IPv6CIDRToRange(ipv6, cidr)

인수

반환 값

서브넷 범위를 나타내는 두 개의 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

IPv6 주소를 이진 형식인 FixedString(16)에서 표준 텍스트 표현으로 변환합니다. 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 │
└─────────────────────────────────────────┴───────┘

IPv6로 매핑된 IPv4 주소

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

표준 텍스트 표현으로 된 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

IPv6 주소를 표준 문자열 표현에서 이진 형식(FixedString(16))으로 변환합니다. ::ffff:111.222.33.44. 형식의 IPv4로 매핑된 IPv6 주소를 허용합니다. IPv6 주소 형식이 올바르지 않으면 기본값 ::를 반환합니다.

구문

IPv6StringToNumOrDefault(string)

인자

  • string — IPv6 주소 문자열. String

반환값

이진 형식의 IPv6 주소이며, 유효하지 않은 경우 0으로 채워진 FixedString(16)을 반환합니다. FixedString(16)

예시

잘못된 IPv6 주소를 사용한 기본 예시

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

IPv6StringToNumOrNull

도입 버전: v22.3

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

바이너리 형식의 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

CIDR(Classless Inter-Domain Routing) 표기법으로 표현된 네트워크에 IP 주소가 포함되는지 여부를 판별합니다.

이 FUNCTION은 문자열로 표현된 IPv4 및 IPv6 주소와 네트워크를 모두 인수로 받습니다. 주소와 CIDR의 IP 버전이 일치하지 않으면 0을 반환합니다.

구문

isIPAddressInRange(address, prefix)

인수

  • address — IPv4 또는 IPv6 주소입니다. String
  • prefix — CIDR 표기법의 IPv4 또는 IPv6 네트워크 프리픽스입니다. String

반환 값

주소의 IP 버전과 CIDR이 일치하면 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

입력 문자열이 IPv4 주소인지 여부를 확인합니다. IPv6에 대해서는 isIPv6String을(를) 참조하십시오.

구문

isIPv4String(string)

인수(Arguments)

  • string — 확인할 IP 주소 문자열입니다. String

반환 값(Returned value)

string이 IPv4 주소인 경우 1, 그렇지 않은 경우 0을 반환합니다. UInt8

예시(Examples)

사용 예시(Usage example)

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

입력 문자열이 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

IPv4 주소의 문자열 또는 UInt32 형태를 IPv4 타입으로 변환합니다. IPv4StringToNumIPv4NumToString 함수와 유사하지만, 입력 인자로 문자열과 부호 없는 정수 데이터 타입을 모두 지원합니다.

구문

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

문자열 또는 UInt32 형식의 IPv4 주소를 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

입력값을 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

입력 값을 IPv4 타입의 값으로 변환하지만, 오류가 발생하는 경우 IPv4 주소 0을 반환합니다. toIPv4와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 IPv4 주소 0(0.0.0.0)을 반환합니다.

지원되는 인수:

  • 점으로 구분된 10진 표기법의 IPv4 주소 문자열 표현.
  • IPv4 주소의 정수 표현.

지원되지 않는 인수(IPv4 주소 0 반환):

  • 잘못된 IP 주소 형식.
  • IPv6 주소.
  • 범위를 벗어난 값.

문법

toIPv4OrZero(x)

인수

  • x — IPv4 주소의 문자열 또는 정수 표현입니다. String 또는 Integer

반환 값

성공하면 IPv4 주소를, 그렇지 않으면 IPv4 주소 0값(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

IPv6 주소의 문자열 표현 또는 UInt128 형식을 IPv6 타입으로 변환합니다. 문자열의 경우 IPv6 주소 형식이 올바르지 않으면 빈 결과를 반환합니다. IPv6 주소를 이진 형식(예: FixedString(16))으로 상호 변환하는 IPv6StringToNumIPv6NumToString FUNCTION과 유사합니다.

입력 문자열에 유효한 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

문자열 또는 UInt128 형식의 IPv6 주소를 IPv6 타입으로 변환합니다. IPv6 주소 형식이 유효하지 않은 경우 ::(0 IPv6 주소) 또는 제공된 IPv6 기본값을 반환합니다.

구문

toIPv6OrDefault(string[, default])

인수(Arguments)

  • string — 변환할 IP 주소 문자열입니다.
  • default — 선택적 인수입니다. string이 잘못된 형식인 경우 반환할 값입니다.

반환 값(Returned value)

IPv6 주소를 반환하며, 인수 string이 잘못된 형식이면 :: 또는 제공된 선택적 기본값을 반환합니다. IPv6

예시(Examples)

유효한 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

입력 값을 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

입력 값을 IPv6 형식의 값으로 변환하지만, 오류가 발생하는 경우에는 0 IPv6 주소를 반환합니다. toIPv6와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 0 IPv6 주소(::)를 반환합니다.

지원되는 인수:

  • 표준 표기법으로 표현된 IPv6 주소 문자열.
  • IPv4-mapped IPv6로 변환되는 IPv4 주소 문자열.
  • IPv6 주소의 이진 표현.

지원되지 않는 인수(0 IPv6 주소 반환):

  • 잘못된 IP 주소 형식.
  • 형식이 올바르지 않은 IPv6 주소.
  • 범위를 벗어난 값.

구문

toIPv6OrZero(x)

인수

  • x — IPv6 또는 IPv4 주소의 문자열 표현입니다. String

반환 값

성공하면 IPv6 주소를, 그렇지 않으면 모두 0인 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        │ ::           │
└─────────────────────────────────────┴──────────────┘