참고
이 섹션에서 언급되는 함수들은 최대 성능을 위해 최적화되어 있으며, 대부분 RFC-3986 표준을 따르지 않습니다.
RFC-3986을 구현한 함수들은 함수 이름에 RFC가 접미사로 붙으며, 일반적으로 더 느립니다.
일반적으로 사용자 정보 문자열이나 @ 기호가 포함되지 않은 공개적으로 등록된 도메인을 사용할 때는 RFC가 아닌 함수 변형을 사용해도 됩니다.
아래 표는 URL에서 각 기호가 해당 RFC 및 RFC가 아닌 변형에 의해 파싱될 수 있는지(✔) 또는 없는지(✗)를 보여 줍니다:
| Symbol | non-RFC | RFC | |
|---|
| ' ' | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| | ✗ | ✗ |
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* | |
*로 표시된 기호는 RFC 3986에서 서브 구분자(sub-delimiter)이며, @ 기호 뒤에 나오는 사용자 정보에 사용할 수 있습니다.
URL 함수에는 두 가지 유형이 있습니다:
- URL에서 파트를 추출하는 함수입니다. 해당 파트가 URL에 없으면 빈 문자열을 반환합니다.
- URL의 일부를 제거하는 함수입니다. URL에 제거할 부분이 없으면 URL은 변경되지 않습니다.
참고
아래 함수들은 system.functions 시스템 테이블에서 가져온 것입니다.
cutFragment
도입 버전: v1.1
번호 기호(#)를 포함한 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에서 물음표를 포함한 쿼리 문자열을 제거합니다.
구문
인수
반환값
쿼리 문자열이 제거된 URL을 반환합니다. String
예시
사용 예
SELECT cutQueryString('http://example.com/path?query=value¶m=123#fragment');
┌─cutQueryString('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path#fragment │
└──────────────────────────────────────────────────────────────────────────┘
cutQueryStringAndFragment
도입 버전: v1.1
URL에서 물음표(?)와 번호 기호(#)를 포함하여 쿼리 문자열과 프래그먼트 식별자를 제거합니다.
구문
cutQueryStringAndFragment(url)
인수
반환값
쿼리 문자열과 프래그먼트 식별자가 제거된 URL을 반환합니다. String
예시
사용 예시
SELECT cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment');
┌─cutQueryStringAndFragment('http://example.com/path?query=value¶m=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')
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 ID와 Client%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.가 있을 경우 이를 제거합니다.
구문
인수(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 │
└────────────────────────────────────────────────────────────┘
도입 버전: v1.1
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은 프로토콜의 포함 여부와 관계없이 지정할 수 있습니다.
구문
인자
반환 값
입력 문자열을 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을 준수합니다.
구문
인수
반환 값
입력 문자열을 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.가 있을 경우 이를 제거한 도메인을 반환합니다.
구문
인수
반환 값
입력 문자열을 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을 준수합니다.
구문
인수
반환 값
입력 문자열을 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 │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘
도입된 버전: v22.3
일반 문자열을 입력으로 받아 특수 문자를 해당 문자에 대한 퍼센트 인코딩 값으로 대체한 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 │
└──────────────────────────────────────────────────────────┘
도입 버전: 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 │
└───────────────────────────────────────────────────────────┘
도입: v1.1
URL에 name 매개변수가 존재하면 해당 값을 반환하며, 존재하지 않으면 빈 문자열을 반환합니다.
이 이름을 가진 매개변수가 여러 개 있으면 첫 번째로 나타나는 값을 반환합니다.
함수는 url 인자에 포함된 매개변수가 name 인자와 동일한 방식으로 인코딩되어 있다고 가정합니다.
구문
extractURLParameter(url, name)
인수
반환 값
지정한 이름의 URL 파라미터 값을 반환합니다. String
예시
사용 예시
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1 │
└──────────────────────────┘
도입 버전: v1.1
URL 매개변수 이름에 해당하는 이름 문자열의 배열을 반환합니다.
값은 디코딩하지 않습니다.
구문
extractURLParameterNames(url)
인수
반환 값
URL 파라미터 이름에 해당하는 문자열의 배열을 반환합니다. Array(String)
예제
사용 예제
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=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¶m2=value2');
┌─extractURLParame⋯¶m2=value2')─┐
│ ['param1=value1','param2=value2'] │
└───────────────────────────────────┘
firstSignificantSubdomain
도입 버전: v
"first significant subdomain"을 반환합니다.
first significant subdomain은 최상위 도메인이 'com', 'net', 'org', 'co' 중 하나인 경우 2차 도메인이며,
그 외에는 3차 도메인입니다.
예를 들어, firstSignificantSubdomain('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain('https://news.clickhouse.com.tr/') = 'clickhouse'입니다.
"중요하지 않은(insignificant)" 2차 도메인 목록 및 기타 구현 세부 사항은 향후 변경될 수 있습니다.
구문
인수
반환 값
예시
firstSignificantSubdomain
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
firstSignificantSubdomainRFC
도입 버전: v
RFC 1034에서 정의된 기준에 따라 「first significant subdomain」을 반환합니다.
구문
인수
반환 값
예제
fragment
도입 버전: v1.1
맨 앞의 해시(#) 기호를 제외한 fragment 식별자를 반환합니다.
구문
인자
반환값
선행 해시 기호를 제외한 프래그먼트 식별자(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)를 추출합니다.
구문
인수
반환값
지정된 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에서 쿼리 문자열을 제외한 경로를 반환합니다.
구문
인수
반환 값
쿼리 문자열을 제외한 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까지 포함합니다.
구문
인수
반환 값
쿼리 문자열과 프래그먼트를 포함한 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.
구문
인수
반환 값
URL의 프로토콜을 반환하며, 프로토콜을 결정할 수 없으면 빈 문자열을 반환합니다. String
예시
사용 예시
SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘
queryString
도입 버전: v1.1
URL의 쿼리 문자열에서 맨 앞의 물음표(?)와 # 및 # 이후의 모든 부분을 제외한 값을 반환합니다.
문법
인수
반환 값
URL에서 앞부분의 물음표(?)와 프래그먼트(fragment)를 제외한 쿼리 문자열을 반환합니다. String
예시
사용 예시
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryString(⋯3#section')─┐
│ query=value¶m=123 │
└──────────────────────────┘
queryStringAndFragment
도입: v1.1
URL의 쿼리 문자열과 프래그먼트(fragment) 식별자를 반환합니다.
문법
queryStringAndFragment(url)
인수
반환 값
URL의 쿼리 문자열과 프래그먼트 식별자(fragment identifier)를 반환합니다. String
예시
사용 예시
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value¶m=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/
구문
인수
반환 값
입력 문자열을 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을 준수합니다.
구문
인수
반환 값
입력 문자열을 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 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘