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

URL 작업용 함수

개요

참고

이 섹션에 언급된 함수들은 최대 성능을 위해 최적화되어 있으며, 대부분 RFC-3986 표준을 따르지 않습니다. RFC-3986을 구현하는 함수들은 함수 이름에 RFC가 붙으며, 일반적으로 더 느립니다.

일반적으로 사용자 문자열이나 @ 기호가 포함되지 않은 공용 등록 도메인을 다룰 때는 RFC가 아닌 함수 변형을 사용하면 됩니다. 아래 표는 URL 내에서 어떤 기호가 해당 RFC 및 비-RFC 변형에 의해 파싱될 수 있는지() 또는 없는지()를 자세히 보여 줍니다:

Symbolnon-RFCRFC
' '
\t
<
>
%✔*
{
}
\
^
~✔*
[
]
;✔*
=✔*
&✔*

*로 표시된 기호는 RFC 3986의 서브 구분자(sub-delimiter)이며, @ 기호 뒤에 오는 사용자 정보에 허용됩니다.

URL 함수에는 두 가지 유형이 있습니다:

  • URL에서 일부를 추출하는 함수. 관련 부분이 URL에 없으면 빈 문자열을 반환합니다.
  • URL에서 일부를 제거하는 함수. URL에 해당 부분이 없으면 URL은 변경되지 않습니다.
참고

아래 함수들은 system.functions 시스템 테이블에서 생성됩니다.

URLHierarchy

도입: v1.1.0

경로와 쿼리 문자열에서 /, ?, # 기호를 기준으로 URL을 순차적으로 잘라 얻은 부분 문자열들을 요소로 하는 배열을 반환합니다. 연속된 구분 기호는 하나로 취급됩니다. 결과 배열의 첫 번째 요소에는 프로토콜과 호스트가 포함되며, 이후 요소들은 경로가 점차 길어지면서 계층 구조를 이루도록 구성됩니다.

구문

URLHierarchy(url)

인수(Arguments)

  • url — 처리할 URL입니다. String

반환값(Returned value)

계층 구조를 이루도록 앞부분부터 차례대로 더 길어지는 URL들의 배열을 반환합니다. Array(String)

예시(Examples)

기본 사용 예(Basic usage)

SELECT URLHierarchy('https://example.com/a/b?c=1')
['https://example.com/','https://example.com/a/','https://example.com/a/b','https://example.com/a/b?c=1']

URLPathHierarchy

도입된 버전: v1.1.0

URL의 경로(path) 구성 요소를 포함하는 배열을 반환하며, 끝은 /, ?, # 기호에서 잘립니다. URLHierarchy와 달리 결과에는 프로토콜과 호스트가 포함되지 않고 경로(path)부터 시작합니다. 연속된 구분 문자는 하나로 간주됩니다.

구문

URLPathHierarchy(url)

인자

  • url — 처리할 URL입니다. String

반환 값

계층 구조를 이루도록 URL 경로 구성 요소를 점차 확장해 나열한 배열을 반환합니다. Array(String)

예시

기본 사용법

SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b','/a/b?c=1']

cutFragment

도입 버전: v1.1.0

URL에서 # 기호를 포함한 프래그먼트 식별자(fragment identifier)를 제거합니다.

구문

cutFragment(url)

인수

반환 값

프래그먼트 식별자가 제거된 URL을 반환합니다. String

예시

사용 예시

SELECT cutFragment('http://example.com/path?query=value#fragment123');
┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value                            │
└────────────────────────────────────────────────────────────────┘

cutQueryString

도입 버전: v1.1.0

URL에서 물음표를 포함한 쿼리 문자열을 제거합니다.

구문

cutQueryString(url)

인수

반환값

쿼리 문자열이 제거된 URL을 반환합니다. String

예제

사용 예제

SELECT cutQueryString('http://example.com/path?query=value&param=123#fragment');
┌─cutQueryString('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path#fragment                                         │
└──────────────────────────────────────────────────────────────────────────┘

cutQueryStringAndFragment

도입 버전: v1.1.0

URL에서 물음표(?)와 해시 기호(#)를 포함하여 쿼리 문자열과 프래그먼트 식별자를 제거합니다.

구문

cutQueryStringAndFragment(url)

인수

반환 값

쿼리 문자열과 fragment 식별자를 제거한 URL을 반환합니다. String

예시

사용 예시

SELECT cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment');
┌─cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path                                                             │
└─────────────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomain

도입 버전: v1.1.0

최상위 서브도메인부터 첫 번째 중요한 서브도메인까지를 포함하는 도메인 부분을 반환합니다.

구문

cutToFirstSignificantSubdomain(url)

인자

  • url — 처리할 URL 또는 도메인 문자열입니다. String

반환값

가능한 경우, 최상위 서브도메인부터 첫 번째 유의미한 서브도메인까지를 포함하는 도메인 부분을 반환하며, 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT
    cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/'),
    cutToFirstSignificantSubdomain('www.tr'),
    cutToFirstSignificantSubdomain('tr');
┌─cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomain('www.tr')─┬─cutToFirstSignificantSubdomain('tr')─┐
│ clickhouse.com.tr                                                 │ tr                                       │                                      │
└───────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────┘

cutToFirstSignificantSubdomainCustom

도입된 버전: v21.1.0

최상위 서브도메인부터 첫 번째 중요한 서브도메인까지를 포함하는 도메인 부분을 반환합니다. 사용자 지정 TLD 목록 이름을 인수로 받습니다. 최신 TLD 목록이 필요하거나 별도의 사용자 지정 목록이 있는 경우 이 FUNCTION이 유용합니다.

구성 예시

<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>

구문

cutToFirstSignificantSubdomainCustom(url, tld_list_name)

인수

  • url — 처리할 URL 또는 도메인 문자열입니다. String
  • tld_list_name — ClickHouse에 구성된 사용자 정의 TLD 목록 이름입니다. const String

반환 값

첫 번째 의미 있는 서브도메인까지의 최상위 서브도메인을 포함하는 도메인 부분을 반환합니다. String

예시

비표준 도메인에 대한 사용자 정의 TLD 목록 사용

SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')
foo.there-is-no-such-domain

cutToFirstSignificantSubdomainCustomRFC

도입 버전: v22.10.0

첫 번째 의미 있는 서브도메인까지의 상위 수준 서브도메인을 포함하는 도메인 부분을 반환합니다. 사용자 정의 TLD 목록 이름을 인자로 받습니다. 최신 TLD 목록이 필요하거나 사용자 정의 목록을 사용하는 경우 이 FUNCTION이 유용합니다. cutToFirstSignificantSubdomainCustom과 유사하지만 RFC 3986을 준수합니다.

구성 예시

<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>

구문

cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)

인수

  • url — RFC 3986에 따라 처리할 URL 또는 도메인 문자열입니다. - tld_list_name — ClickHouse에 설정된 사용자 정의 TLD 목록의 이름입니다.

반환 값

첫 번째 의미 있는 서브도메인까지의 최상위 서브도메인들을 포함하는 도메인 부분을 반환합니다. String

예시

사용 예시

SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─────┐
│ www.foo                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomainCustomWithWWW

도입 버전: v21.1.0

최상위 서브도메인부터 첫 번째 유의미한 서브도메인까지 포함하는 도메인 부분을 반환하며, 'www'는 제거하지 않습니다. 사용자 지정 TLD 목록 이름을 인수로 받습니다. 최신 TLD 목록이 필요하거나 사용자 지정 목록을 사용하는 경우에 유용합니다.

구성 예시

<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>
    

**Syntax**

```sql
cutToFirstSignificantSubdomainCustomWithWWW(url, tld_list_name)

인수

  • url — 처리할 URL 또는 도메인 문자열. - tld_list_name — ClickHouse에서 구성한 사용자 정의 TLD 목록 이름.

반환 값

'www'를 제거하지 않고 첫 번째 의미 있는 서브도메인까지의 최상위 서브도메인을 포함하는 도메인 부분입니다. String

예시

사용 예시

SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list')─┐
│ www.foo                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomainCustomWithWWWRFC

도입 버전: v22.10.0

www를 제거하지 않고, 상위 서브도메인들을 포함하여 첫 번째 의미 있는 서브도메인까지의 도메인 부분을 반환합니다. 사용자 정의 TLD 목록 이름을 인수로 받습니다. 최신 TLD 목록이 필요하거나 사용자 정의 목록을 사용하는 경우에 유용합니다. cutToFirstSignificantSubdomainCustomWithWWW와 유사하지만 RFC 3986을 준수합니다.

구성 예시

<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>
    

**Syntax**

```sql
cutToFirstSignificantSubdomainCustomWithWWWRFC(url, tld_list_name)

인수

  • url — RFC 3986에 따라 처리할 URL 또는 도메인 문자열입니다. - tld_list_name — ClickHouse에 구성한 사용자 정의 TLD 목록의 이름입니다.

반환 값

www를 제거하지 않고, 첫 번째 의미 있는 서브도메인까지의 상위 서브도메인을 포함한 도메인 부분을 반환합니다. String

예시

사용자 정의 TLD 목록을 사용하여 www를 유지하는 RFC 3986 파싱

SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
www.example.custom

cutToFirstSignificantSubdomainRFC

도입 버전: v22.10.0

최상위 서브도메인부터 "first significant subdomain"까지를 포함하는 도메인 부분을 반환합니다. cutToFirstSignificantSubdomain과 유사하지만 RFC 3986을 준수합니다.

구문

cutToFirstSignificantSubdomainRFC(url)

인수

  • url — RFC 3986에 따라 처리할 URL 또는 도메인 문자열입니다. String

반환 값

가능한 경우 최상위 서브도메인부터 첫 번째 의미 있는 서브도메인까지를 포함하는 도메인 부분을 반환하며, 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT
    cutToFirstSignificantSubdomain('http://user:[email protected]:8080'),
    cutToFirstSignificantSubdomainRFC('http://user:[email protected]:8080');
┌─cutToFirstSignificantSubdomain('http://user:[email protected]:8080')─┬─cutToFirstSignificantSubdomainRFC('http://user:[email protected]:8080')─┐
│                                                                         │ example.com                                                                │
└─────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomainWithWWW

도입된 버전: v20.12.0

최상위 서브도메인부터 「첫 번째 유의미한 서브도메인(first significant subdomain)」까지를 포함하는 도메인 부분을 반환하며, 'www.' 접두사는 제거하지 않습니다.

cutToFirstSignificantSubdomain과 유사하지만, 'www.' 접두사가 있을 경우 이를 유지합니다.

구문

cutToFirstSignificantSubdomainWithWWW(url)

인수

  • url — 처리할 URL 또는 도메인 문자열입니다. String

반환 값

가능한 경우 최상위 서브도메인부터 최초의 의미 있는 서브도메인(필요 시 www 포함)까지를 포함하는 도메인 부분을 반환하며, 불가능한 경우 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT
    cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/'),
    cutToFirstSignificantSubdomainWithWWW('www.tr'),
    cutToFirstSignificantSubdomainWithWWW('tr');
┌─cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomainWithWWW('www.tr')─┬─cutToFirstSignificantSubdomainWithWWW('tr')─┐
│ clickhouse.com.tr                                                        │ www.tr                                          │                                             │
└──────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────┴─────────────────────────────────────────────┘

cutToFirstSignificantSubdomainWithWWWRFC

도입된 버전: v22.10.0

최상위 서브도메인부터 「첫 번째 중요한 서브도메인(first significant subdomain)」까지를 포함하는 도메인 부분을, 「www」를 제거하지 않고 반환합니다. cutToFirstSignificantSubdomainWithWWW와 유사하지만 RFC 3986을 준수합니다.

구문

cutToFirstSignificantSubdomainWithWWWRFC(url)

인자

  • url — RFC 3986에 따라 처리할 URL 또는 도메인 문자열.

반환 값

가능한 경우 첫 번째 주요 서브도메인(「www」 포함)까지의 상위 서브도메인을 포함한 도메인 부분을 반환하며, 그렇지 않으면 빈 문자열을 반환합니다. 반환 타입은 String입니다.

예시

사용 예시

SELECT
    cutToFirstSignificantSubdomainWithWWW('http:%2F%[email protected]/economicheskiy'),
    cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%[email protected]/economicheskiy');
┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%[email protected]/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%[email protected]/economicheskiy')─┐
│                                                                                       │ mail.ru                                                                                  │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘

cutURLParameter

도입 버전: v1.1.0

name 파라미터가 포함된 URL에서 해당 파라미터를 제거합니다. 이 FUNCTION은 파라미터 이름의 문자를 인코딩하거나 디코딩하지 않으며, 예를 들어 Client IDClient%20ID는 서로 다른 파라미터 이름으로 취급됩니다.

구문

cutURLParameter(url, name)

인자

반환 값

name URL 파라미터가 제거된 URL입니다. String

예시

사용 예시

SELECT
    cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', 'a') AS url_without_a,
    cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', ['c', 'e']) AS url_without_c_and_e;
┌─url_without_a────────────────┬─url_without_c_and_e──────┐
│ http://bigmir.net/?c=d&e=f#g │ http://bigmir.net/?a=b#g │
└──────────────────────────────┴──────────────────────────┘

cutWWW

도입 버전: v1.1.0

URL 도메인의 앞에 www.가 붙어 있으면 제거합니다.

구문

cutWWW(url)

인수

반환 값

도메인 맨 앞의 www.가 제거된 URL을 반환합니다. String

예시

사용 예시

SELECT cutWWW('http://www.example.com/path?query=value#fragment');
┌─cutWWW('http://www.example.com/path?query=value#fragment')─┐
│ http://example.com/path?query=value#fragment               │
└────────────────────────────────────────────────────────────┘

decodeURLComponent

도입 버전: v1.1.0

URL로 인코딩된 문자열을 입력으로 받아 디코딩하여 원래의 사람이 읽을 수 있는 형태로 복원합니다.

구문

decodeURLComponent(url)

인수

반환값

디코딩된 URL을 반환합니다. String

예시

사용 예시

SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘

decodeURLFormComponent

도입 버전: v1.1.0

+ 기호를 공백으로 변환하고 퍼센트 인코딩된 문자를 디코딩하는 폼 인코딩 규칙(RFC-1866)을 사용하여 URL로 인코딩된 문자열을 디코딩합니다.

Syntax

decodeURLFormComponent(url)

인수

반환값

디코딩된 URL을 반환합니다. String

예제

사용 예제

SELECT decodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT%201+2%2B3') AS DecodedURL;
┌─DecodedURL────────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1 2+3 │
└───────────────────────────────────────────┘

domain

도입된 버전: v1.1.0

URL에서 호스트 이름(hostname)을 추출합니다.

URL은 프로토콜 포함 여부와 관계없이 지정할 수 있습니다.

구문

domain(url)

인수

반환 값

입력 문자열을 URL로 해석할 수 있는 경우 호스트 이름을 반환하고, 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT domain('svn+ssh://some.svn-hosting.com:80/repo/trunk');
┌─domain('svn+ssh://some.svn-hosting.com:80/repo/trunk')─┐
│ some.svn-hosting.com                                   │
└────────────────────────────────────────────────────────┘

domainRFC

도입 버전: v22.10.0

URL에서 호스트명을 추출합니다. domain과 유사하지만 RFC 3986을 준수합니다.

구문

domainRFC(url)

인수

반환 값

입력 문자열을 URL로 파싱할 수 있으면 호스트 이름을, 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT
    domain('http://user:[email protected]:8080/path?query=value#fragment'),
    domainRFC('http://user:[email protected]:8080/path?query=value#fragment');
┌─domain('http://user:[email protected]:8080/path?query=value#fragment')─┬─domainRFC('http://user:[email protected]:8080/path?query=value#fragment')─┐
│                                                                           │ example.com                                                                  │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘

domainWithoutWWW

도입: v1.1.0

URL의 도메인에서 앞에 오는 www.를 제거한 값을 반환합니다.

구문

domainWithoutWWW(url)

인수

반환값

입력 문자열을 URL로 파싱할 수 있는 경우 도메인 이름을 반환합니다(선행 www.는 제외). 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT domainWithoutWWW('http://[email protected]:80/');
┌─domainWithoutWWW('http://[email protected]:80/')─┐
│ example.com                                         │
└─────────────────────────────────────────────────────┘

domainWithoutWWWRFC

도입된 버전: v1.1.0

선행 www.가 있을 경우 이를 제거한 도메인을 반환합니다. domainWithoutWWW와 유사하지만 RFC 3986을 따릅니다.

구문

domainWithoutWWWRFC(url)

인수

반환값

입력 문자열을 URL로 해석할 수 있으면 도메인 이름(앞부분의 www. 제외)을 반환하고, 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT
    domainWithoutWWW('http://user:[email protected]:8080/path?query=value#fragment'),
    domainWithoutWWWRFC('http://user:[email protected]:8080/path?query=value#fragment');
┌─domainWithoutWWW('http://user:[email protected]:8080/path?query=value#fragment')─┬─domainWithoutWWWRFC('http://user:[email protected]:8080/path?query=value#fragment')─┐
│                                                                                         │ example.com                                                                                │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘

encodeURLComponent

도입 버전: v22.3.0

일반 문자열을 입력으로 받아 특수 문자를 해당 퍼센트 인코딩 값으로 대체한 URL 인코딩(퍼센트 인코딩) 형식으로 변환합니다.

Syntax

encodeURLComponent(url)

인수

반환 값

인코딩된 URL을 반환합니다. String

예제

사용 예제

SELECT encodeURLComponent('http://127.0.0.1:8123/?query=SELECT 1;') AS EncodedURL;
┌─EncodedURL───────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT%201%3B │
└──────────────────────────────────────────────────────────┘

encodeURLFormComponent

도입된 버전: v22.3.0

공백 문자를 + 기호로 변환하고 특수 문자를 퍼센트 인코딩하는 폼 인코딩 규칙(RFC-1866)에 따라 문자열을 인코딩합니다.

구문

encodeURLFormComponent(url)

인수

반환값

인코딩된 URL을 반환합니다. String

예제

사용 예제

SELECT encodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT 1 2+3') AS EncodedURL;
┌─EncodedURL────────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT+1+2%2B3 │
└───────────────────────────────────────────────────────────┘

extractURLParameter

도입 버전: v1.1.0

URL에 name 매개변수가 존재하면 해당 값을 반환하고, 존재하지 않으면 빈 문자열을 반환합니다. 해당 이름을 가진 매개변수가 여러 개 있을 경우 첫 번째 항목을 반환합니다. 함수는 url 매개변수에 포함된 매개변수가 name 인자와 동일한 방식으로 인코딩되어 있다고 가정합니다.

구문

extractURLParameter(url, name)

인수

반환 값

지정된 이름의 URL 매개변수 값을 반환합니다. String

예제

사용 예제

SELECT extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1                   │
└──────────────────────────┘

extractURLParameterNames

도입 버전: v1.1.0

URL 매개변수의 이름에 해당하는 문자열 배열을 반환합니다. 값은 디코딩되지 않습니다.

구문

extractURLParameterNames(url)

인수

반환 값

URL 파라미터 이름에 해당하는 문자열 배열을 반환합니다. Array(String)

예시

사용 예시

SELECT extractURLParameterNames('http://example.com/?param1=value1&param2=value2');
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2']      │
└──────────────────────────┘

extractURLParameters

도입 버전: v1.1.0

URL 매개변수와 일치하는 name=value 형식의 문자열 배열을 반환합니다. 값은 디코딩되지 않습니다.

구문

extractURLParameters(url)

인수

반환값

URL 매개변수에 대응하는 name=value 문자열의 배열을 반환합니다. Array(String)

예시

사용 예시

SELECT extractURLParameters('http://example.com/?param1=value1&param2=value2');
┌─extractURLParame⋯&param2=value2')─┐
│ ['param1=value1','param2=value2'] │
└───────────────────────────────────┘

firstSignificantSubdomain

도입 버전: v1.1.0

「first significant subdomain(첫 번째 중요한 서브도메인)」을 반환합니다.

첫 번째 중요한 서브도메인은 두 번째 레벨 도메인이 'com', 'net', 'org', 또는 'co'인 경우 해당 두 번째 레벨 도메인입니다. 그 외에는 세 번째 레벨 도메인입니다.

예를 들어, firstSignificantSubdomain('https://news.clickhouse.com/&#39;) = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/&#39;) = 'clickhouse'입니다.

「중요하지 않은(insignificant)」 두 번째 레벨 도메인 목록과 기타 구현 세부 사항은 향후 변경될 수 있습니다.

구문(Syntax)

firstSignificantSubdomain(url)

인수

  • 없음.

반환 값

예시

firstSignificantSubdomain

SELECT firstSignificantSubdomain('https://news.clickhouse.com/')

firstSignificantSubdomainCustom

도입 버전: v21.1.0

사용자 정의 TLD(최상위 도메인) 목록을 사용하여 URL의 첫 번째 유의미한 서브도메인을 반환합니다. 사용자 정의 TLD 목록 이름은 어떤 도메인 접미사를 최상위 도메인으로 취급할지 정의하는 구성 이름을 가리킵니다. 이는 비표준 TLD 계층 구조를 사용하는 환경에서 유용합니다. 이 FUNCTION은 프로토콜과 그 이후의 모든 부분이 제거되어 있다고 가정하는 단순화된 URL 파싱 알고리즘을 사용합니다.

구문

firstSignificantSubdomainCustom(url, tld_list_name)

인수

  • url — 서브도메인을 추출할 URL입니다. String
  • tld_list_name — 설정에 정의된 사용자 지정 TLD 목록의 이름입니다. String

반환 값

첫 번째 유의미한 서브도메인을 반환합니다. String

예시

기본 사용 예

SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
example

firstSignificantSubdomainCustomRFC

도입 버전: v22.10.0

firstSignificantSubdomainCustom와 유사하지만, 단순화된 알고리즘 대신 RFC 3986을 준수하는 URL 파싱을 사용합니다.

구문

firstSignificantSubdomainCustomRFC(url, tld_list_name)

인수

  • url — 서브도메인을 추출할 URL입니다. String
  • tld_list_name — 설정에 지정된 사용자 정의 TLD 목록 이름입니다. String

반환값

의미 있는 첫 번째 서브도메인을 반환합니다. String

예시

기본 사용법

SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
example

firstSignificantSubdomainRFC

도입 버전: v22.10.0

RFC 1034에 따라 「첫 번째 유의미한 서브도메인(first significant subdomain)」을 반환합니다.

구문

firstSignificantSubdomainRFC(url)

인수

  • 없음

반환 값

예시

fragment

도입 버전: v1.1.0

앞에 붙는 해시 기호(#)를 제외한 fragment 식별자(fragment identifier)를 반환합니다.

구문

fragment(url)

인수

반환 값

앞에 붙은 해시 기호(#)를 제외한 fragment identifier를 반환합니다. String

예시

사용 예시

SELECT fragment('https://clickhouse.com/docs/getting-started/quick-start/cloud#1-create-a-clickhouse-service');
┌─fragment('http⋯ouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────┘

netloc

도입된 버전: v20.5.0

URL에서 네트워크 위치(username:password@host:port)를 추출합니다.

구문

netloc(url)

인수

반환값

지정된 URL에서 username:password@host:port를 반환합니다. String

예시

사용 예시

SELECT netloc('http://[email protected]:80/');
┌─netloc('http⋯e.com:80/')─┐
│ [email protected]:80  │
└──────────────────────────┘

path

도입 버전: v1.1.0

URL에서 쿼리 문자열을 제외한 경로(path)를 반환합니다.

구문

path(url)

인수

반환값

쿼리 문자열을 제외한 URL의 경로를 반환합니다. String

예시

사용 예시

SELECT path('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value');
┌─path('https://clickhouse.com/en/sql-reference/functions/url-functions/?query=value')─┐
│ /docs/sql-reference/functions/url-functions/                                         │
└──────────────────────────────────────────────────────────────────────────────────────┘

pathFull

도입된 버전: v1.1.0

path와 동일하지만, URL의 쿼리 문자열과 프래그먼트까지 포함합니다.

구문

pathFull(url)

인수

반환 값

쿼리 문자열(query string)과 fragment를 포함한 URL 경로를 반환합니다. String

예시

사용 예시

SELECT pathFull('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value#section');
┌─pathFull('https://clickhouse.com⋯unctions/?query=value#section')─┐
│ /docs/sql-reference/functions/url-functions/?query=value#section │
└──────────────────────────────────────────────────────────────────┘

port

도입: v20.5.0

URL에서 포트를 반환하며, URL에 포트가 없거나 URL을 파싱할 수 없는 경우 default_port를 반환합니다.

구문

port(url[, default_port])

인수

  • url — URL. String
  • default_port — 선택적입니다. 반환할 기본 포트 번호입니다. 기본값은 0입니다. UInt16

반환 값

URL의 포트를 반환하며, URL에 포트가 없거나 유효성 검사 오류가 발생한 경우 기본 포트를 반환합니다. UInt16

예시

사용 예시

SELECT port('https://clickhouse.com:8443/docs'), port('https://clickhouse.com/docs', 443);
┌─port('https://clickhouse.com:8443/docs')─┬─port('https://clickhouse.com/docs', 443)─┐
│                                     8443 │                                      443 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘

portRFC

도입 버전: v22.10.0

포트 번호를 반환하며, URL에 포트가 없거나 URL을 파싱할 수 없는 경우에는 default_port를 반환합니다. port와 유사하지만, RFC 3986을 준수합니다.

구문

portRFC(url[, default_port])

인수

  • url — URL. String
  • default_port — 선택적입니다. 반환할 기본 포트 번호입니다. 기본값은 0입니다. UInt16

반환 값

URL에 포트가 없거나 유효성 검사 오류가 발생한 경우 기본 포트를, 그렇지 않은 경우 해당 포트를 반환합니다. UInt16

예시

사용 예시

SELECT port('http://user:[email protected]:8080/'), portRFC('http://user:[email protected]:8080/');
┌─port('http:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│                        0 │                     8080 │
└──────────────────────────┴──────────────────────────┘

protocol

도입된 버전: v1.1.0

URL에서 프로토콜을 추출합니다.

일반적으로 반환되는 값의 예: http, https, ftp, mailto, tel, magnet.

구문

protocol(url)

인수

반환 값

URL의 프로토콜을 반환하며, 프로토콜을 알 수 없으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https                               │
└─────────────────────────────────────┘

queryString

도입 버전: v1.1.0

URL의 쿼리 문자열에서 처음 물음표(?)를 제외하고, # 문자와 그 이후의 모든 내용을 제외한 문자열을 반환합니다.

구문

queryString(url)

인수

반환 값

URL의 쿼리 문자열에서 선행 물음표와 프래그먼트를 제거한 문자열을 반환합니다. String

예시

사용 예시

SELECT queryString('https://clickhouse.com/docs?query=value&param=123#section');
┌─queryString(⋯3#section')─┐
│ query=value&param=123    │
└──────────────────────────┘

queryStringAndFragment

도입 버전: v1.1.0

URL에서 쿼리 문자열과 프래그먼트 식별자를 반환합니다.

구문

queryStringAndFragment(url)

인수

반환 값

URL의 쿼리 문자열과 프래그먼트 식별자를 반환합니다. String

예시

사용 예시

SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value&param=123#section │
└───────────────────────────────┘

topLevelDomain

도입 버전: v1.1.0

URL에서 최상위 도메인을 추출합니다.

참고

URL은 프로토콜이 있어도 없어도 지정할 수 있습니다. 예를 들어:

svn+ssh://some.svn-hosting.com:80/repo/trunk
some.svn-hosting.com:80/repo/trunk
https://clickhouse.com/time/

구문

topLevelDomain(url)

인수

반환 값

입력 문자열을 URL로 파싱할 수 있는 경우 도메인 이름을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다. String

예제

사용 예제

SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com                                                                │
└────────────────────────────────────────────────────────────────────┘

topLevelDomainRFC

도입된 버전: v22.10.0

URL에서 최상위 도메인을 추출합니다. topLevelDomain과 유사하지만 RFC 3986을 준수합니다.

구문

topLevelDomainRFC(url)

인수

반환 값

입력 문자열을 URL로 해석할 수 있는 경우 도메인 이름을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT topLevelDomain('http://foo:foo%[email protected]'), topLevelDomainRFC('http://foo:foo%[email protected]');
┌─topLevelDomain('http://foo:foo%[email protected]')─┬─topLevelDomainRFC('http://foo:foo%[email protected]')─┐
│                                                │ com                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘