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

URL 처리를 위한 함수

개요

참고

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

일반적으로 사용자 정보 문자열이나 @ 기호가 포함되지 않은 공개적으로 등록된 도메인을 사용할 때는 RFC가 아닌 함수 변형을 사용해도 됩니다. 아래 표는 URL에서 각 기호가 해당 RFCRFC가 아닌 변형에 의해 파싱될 수 있는지() 또는 없는지()를 보여 줍니다:

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

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

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

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

아래 함수들은 system.functions 시스템 테이블에서 가져온 것입니다.

cutFragment

도입 버전: v1.1

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

구문

cutFragment(url)

인수

반환 값

프래그먼트 식별자(fragment identifier)가 제거된 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

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

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

구문

cutQueryStringAndFragment(url)

인수

반환값

쿼리 문자열과 프래그먼트 식별자가 제거된 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

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

구문

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

도메인에서 첫 번째 의미 있는 서브도메인까지의 상위 서브도메인을 포함하는 부분을 반환합니다. 사용자 정의 TLD 목록의 이름을 인수로 받습니다. 이 FUNCTION은 최신 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>

구문

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

도메인에서 최상위 도메인과 그 상위 서브도메인을 포함하여 첫 번째 의미 있는 서브도메인까지의 부분을 반환합니다. 사용자 정의 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

최상위 서브도메인을 포함하여 첫 번째 중요한 서브도메인까지의 도메인 부분을 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)

인수(Arguments)

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

반환 값(Returned value)

첫 번째 유의미한 서브도메인까지의 최상위 서브도메인을 포함하는 도메인 부분을 반환하며, 「www」는 제거하지 않습니다. String

예시(Examples)

사용 예시(Usage example)

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

cutToFirstSignificantSubdomainCustomWithWWWRFC

도입 버전: v22.10

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

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

구문

cutToFirstSignificantSubdomainRFC(url)

인수(Arguments)

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

반환 값(Returned value)

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

예시(Examples)

사용 예시(Usage example)

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

cutToFirstSignificantSubdomainWithWWW

도입 버전: v20.12

최상위 서브도메인부터 「첫 번째 의미 있는 서브도메인(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

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

구문

cutToFirstSignificantSubdomainWithWWWRFC(url)

인수

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

반환 값

도메인에서 최상위 서브도메인부터 첫 번째 유의미한 서브도메인까지의 부분(가능한 경우 'www' 포함)을 반환합니다. 해당 부분이 없으면 빈 문자열을 반환합니다. String

예시

사용 예시

SELECT
    cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy'),
    cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy');
┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┐
│                                                                                       │ mail.ru                                                                                  │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘

cutURLParameter

도입된 버전: v1.1

URL에 name 매개변수가 존재하면 제거합니다. 이 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

URL 도메인에서 선행하는 www.가 있을 경우 이를 제거합니다.

구문

cutWWW(url)

인수(Arguments)

반환값(Returned value)

도메인 앞부분의 www.이 제거된 URL을 반환합니다. String

예제(Examples)

사용 예제(Usage example)

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

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

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

구문

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

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

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

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

구문

domainRFC(url)

인수

반환 값

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

예시

사용 예시

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

domainWithoutWWW

도입 버전: v1.1

URL에서 선행 www.가 있을 경우 이를 제거한 도메인을 반환합니다.

구문

domainWithoutWWW(url)

인수

반환 값

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

예제

사용 예제

SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com                                         │
└─────────────────────────────────────────────────────┘

domainWithoutWWWRFC

도입 버전: v1.1

도메인 앞에 www.가 있는 경우 이를 제거한 도메인을 반환합니다. domainWithoutWWW와 유사하지만 RFC 3986을 준수합니다.

구문

domainWithoutWWWRFC(url)

인수

반환 값

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

예시

사용 예시

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

encodeURLComponent

도입된 버전: v22.3

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

구문

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

문자열을 폼 인코딩 규칙(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

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

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

구문

extractURLParameterNames(url)

인수

반환 값

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

예제

사용 예제

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

extractURLParameters

도입 버전: v1.1

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

도입 버전: v

"first significant subdomain"을 반환합니다.

first significant subdomain은 최상위 도메인이 'com', 'net', 'org', 'co' 중 하나인 경우 2차 도메인이며, 그 외에는 3차 도메인입니다.

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

"중요하지 않은(insignificant)" 2차 도메인 목록 및 기타 구현 세부 사항은 향후 변경될 수 있습니다.

구문

인수

  • 없음.

반환 값

예시

firstSignificantSubdomain

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

firstSignificantSubdomainRFC

도입 버전: v

RFC 1034에서 정의된 기준에 따라 「first significant subdomain」을 반환합니다.

구문

인수

  • 없음

반환 값

예제

fragment

도입 버전: v1.1

맨 앞의 해시(#) 기호를 제외한 fragment 식별자를 반환합니다.

구문

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

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

구문

netloc(url)

인수

반환값

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

예시

사용 예시

SELECT netloc('http://paul@www.example.com:80/');
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80  │
└──────────────────────────┘

path

도입 버전: v1.1

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

구문

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

path와 동일하지만, URL의 쿼리 문자열과 fragment까지 포함합니다.

구문

pathFull(url)

인수

반환 값

쿼리 문자열과 프래그먼트를 포함한 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

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

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

구문

portRFC(url[, default_port])

인수

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

반환 값

URL에 포트가 없거나 검증 오류가 발생한 경우 기본 포트를, 그렇지 않으면 URL의 포트를 반환합니다. UInt16

예시

사용 예시

SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');
┌─port('http:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│                        0 │                     8080 │
└──────────────────────────┴──────────────────────────┘

protocol

도입된 버전: v1.1

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

일반적인 반환 값 예시: http, https, ftp, mailto, tel, magnet.

구문

protocol(url)

인수

반환 값

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

예시

사용 예시

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

queryString

도입 버전: v1.1

URL의 쿼리 문자열에서 맨 앞의 물음표(?)와 ## 이후의 모든 부분을 제외한 값을 반환합니다.

문법

queryString(url)

인수

반환 값

URL에서 앞부분의 물음표(?)와 프래그먼트(fragment)를 제외한 쿼리 문자열을 반환합니다. String

예시

사용 예시

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

queryStringAndFragment

도입: v1.1

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

문법

queryStringAndFragment(url)

인수

반환 값

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

예시

사용 예시

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

topLevelDomain

도입된 버전: v1.1

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

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

구문

topLevelDomainRFC(url)

인수

반환 값

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

예시

사용 예시

SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');
┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│                                                │ com                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘