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

IPv4 및 IPv6 주소를 처리하기 위한 함수

IPv4CIDRToRange

도입 버전: v20.1.0

Classless Inter-Domain Routing (CIDR) 접두사 길이가 지정된 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.0

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

구문

IPv4NumToString(num)

별칭(Aliases): INET_NTOA

인수(Arguments)

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

반환 값(Returned value)

MAC 주소를 나타내는 숫자를 반환하며, 형식이 잘못되면 0을 반환합니다. String

예시(Examples)

사용 예시(Usage example)

IPv4NumToString(3232235521)
192.168.0.1

IPv4NumToStringClassC

도입 버전: v1.1.0

32비트 정수를 점으로 구분된 10진 표기법(A.B.C.D 형식)의 IPv4 주소 문자열로 변환합니다. IPv4NumToString와 유사하지만 마지막 옥텟(octet) 대신 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)

별칭(Aliases): INET_ATON

인수(Arguments)

  • string — IPv4 주소 문자열입니다. String

반환 값(Returned value)

IPv4 주소를 반환합니다. UInt32

예시(Examples)

사용 예시(Usage example)

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

빅 엔디언(big endian) 32비트 정수를 IPv4 주소로 해석한 다음, 이 IPv4 주소에 대응하는 IPv6 주소를 FixedString(16) 형식으로 표현합니다.

구문

IPv4ToIPv6(x)

인수

반환값

IPv6 주소의 이진 표현을 반환합니다. FixedString(16)

예시

사용 예시

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

IPv6CIDRToRange

도입된 버전: v20.1.0

CIDR(Classless Inter-Domain Routing) 프리픽스 길이가 포함된 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.0

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.0

IPv6 주소를 표준 텍스트 표현에서 이진 형식(FixedString(16))으로 변환합니다. ::ffff:111.222.33.44. 형식의 IPv4가 매핑된 IPv6 주소를 허용합니다. IPv6 주소 형식이 올바르지 않으면 예외가 발생합니다.

입력 문자열에 유효한 IPv4 주소가 포함된 경우 해당 IPv4에 대응하는 IPv6 주소를 반환합니다. 16진수 표기(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-mapped IPv6 주소를 허용합니다. IPv6 주소의 형식이 잘못된 경우 기본값 ::를 반환합니다.

구문

IPv6StringToNumOrDefault(string)

인자

  • string — IPv6 주소 문자열입니다. String

반환값

이진 형식의 IPv6 주소이거나, 주소가 유효하지 않은 경우 0으로 채워진 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

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

이 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.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

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

Syntax

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 타입의 값으로 변환하지만, 오류가 발생하는 경우 0인 IPv4 주소를 반환합니다. toIPv4와 유사하지만, 변환 오류 시 예외를 던지는 대신 0인 IPv4 주소(0.0.0.0)를 반환합니다.

지원되는 인수:

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

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

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

구문

toIPv4OrZero(x)

인수

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

반환 값

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

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

입력 문자열에 올바른 IPv4 주소가 포함되어 있으면, 해당 IPv4 주소에 대응하는 IPv6 주소를 반환합니다.

구문

toIPv6(x)

인수(Arguments)

반환값(Returned value)

IPv6 주소를 반환합니다. IPv6

예시(Examples)

사용 예시(Usage example)

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

문자열 또는 UInt128 형식의 IPv6 주소를 IPv6 타입으로 변환합니다. IPv6 주소 형식이 올바르지 않으면 :: (0 IPv6 주소) 또는 제공된 기본 IPv6 주소를 반환합니다.

구문

toIPv6OrDefault(string[, default])

인수

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

반환 값

IPv6 주소를 반환합니다. 인수 string의 형식이 잘못된 경우 :: 또는 제공된 선택적 기본값을 반환합니다. 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을 반환합니다. 변환 오류 시 예외를 던지는 대신 NULL을 반환한다는 점을 제외하면 toIPv6와 같습니다.

지원되는 인수:

  • 표준 표기법의 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-mapped IPv6으로 변환되는 IPv4 주소 문자열.
  • IPv6 주소의 바이너리 표현.

지원되지 않는 인수(제로 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        │ ::           │
└─────────────────────────────────────┴──────────────┘