이 섹션에 언급된 함수는 최대 성능을 위해 최적화되어 있으며, 대부분 RFC-3986 표준을 따르지 않습니다.
RFC-3986을 구현하는 함수는 함수 이름 끝에 RFC가 붙으며, 일반적으로 더 느립니다.
공개적으로 등록된 도메인을 다룰 때, 사용자 정보 문자열이나 @ 기호가 포함되지 않았다면 일반적으로 non-RFC 함수 변형을 사용할 수 있습니다.
아래 표는 URL에서 각 RFC 및 non-RFC 변형이 어떤 기호를 파싱할 수 있는지(✔), 또는 파싱할 수 없는지(✗)를 보여줍니다.
| 기호 | non-RFC | RFC | |
|---|
| ’ ’ | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| | ✗ | ✗ |
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* | |
*로 표시된 기호는 RFC 3986의 하위 구분 기호(sub-delimiters)이며, @ 기호 뒤의 사용자 정보에 허용됩니다.
URL 함수에는 두 가지 타입이 있습니다.
- URL의 일부를 추출하는 함수입니다. URL에 해당 부분이 없으면 빈 문자열을 반환합니다.
- URL의 일부를 제거하는 함수입니다. URL에 해당하는 부분이 없으면 URL은 변경되지 않습니다.
아래 함수는 system.functions 시스템 테이블(system table)에서 생성됩니다.
도입 버전: v1.1.0
경로와 쿼리 문자열에서 /, ?, # 기호를 기준으로 URL의 끝부분을 잘라낸 값들을 담은 배열을 반환합니다. 연속된 구분자 문자는 하나로 간주됩니다. 결과의 첫 번째 요소에는 프로토콜과 호스트가 포함되며, 이후에는 점차 길어지는 경로가 계층 구조를 이룹니다.
구문
인수
반환 값
점차 더 긴 URL들로 계층 구조를 이루는 배열을 반환합니다. Array(String)
예시
기본 사용법
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']
도입 버전: v1.1.0
URL의 경로 구성 요소를 담은 배열을 반환하며, 끝부분에서 /, ?, # 기호를 기준으로 잘라냅니다. URLHierarchy와 달리 결과에는 프로토콜과 호스트가 포함되지 않으며, 경로부터 시작합니다. 연속된 구분자 문자는 하나로 간주됩니다.
구문
인수
반환 값
계층 구조를 이루는, 점차 길어지는 URL 경로 구성 요소의 배열을 반환합니다. Array(String)
예시
기본 사용법
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b','/a/b?c=1']
도입 버전: v1.1.0
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 │
└────────────────────────────────────────────────────────────────┘
도입 버전: v1.1.0
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.0
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.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 목록이 필요하거나 사용자 지정 목록을 사용하는 경우 유용합니다.
구성 예시
<!-- <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: 경로는 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 목록이 필요하거나 사용자 지정 목록이 있는 경우 이 함수가 유용할 수 있습니다.
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>
<!-- 참고: 경로는 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: 경로는 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>
{/* 참고: 경로는 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.0
“첫 번째 유의미한 하위 도메인”까지의 최상위 하위 도메인을 포함하는 도메인 부분을 반환합니다. cutToFirstSignificantSubdomain와 유사하지만 RFC 3986을 준수합니다.
구문
cutToFirstSignificantSubdomainRFC(url)
인수
url — RFC 3986에 따라 처리할 URL 또는 도메인 문자열입니다. String
반환 값
가능한 경우 최상위 하위 도메인부터 첫 번째 유의미한 하위 도메인까지 포함된 도메인 부분을 반환하고, 그렇지 않으면 빈 문자열을 반환합니다. String
예시
사용 예시
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.0
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
도메인에서 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 │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘
지원 시작 버전: v1.1.0
URL에 name 매개변수가 있으면 제거합니다.
이 함수는 매개변수 이름의 문자를 인코딩하거나 디코딩하지 않으므로, 예를 들어 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 │
└──────────────────────────────┴──────────────────────────┘
도입 버전: v1.1.0
URL의 도메인에 www. 접두사가 있으면 제거합니다.
구문
인수
반환 값
도메인 앞부분의 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 │
└────────────────────────────────────────────────────────────┘
도입 버전: v1.1.0
URL로 인코딩된 문자열을 입력으로 받아 원래의 읽을 수 있는 형태로 디코딩합니다.
구문
인수
반환 값
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; │
└────────────────────────────────────────┘
도입 버전: v1.1.0
+ 기호를 공백으로 변환하고 퍼센트 인코딩된 문자를 디코딩하는 폼 인코딩 규칙(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 │
└───────────────────────────────────────────┘
도입 버전: v1.1.0
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 │
└────────────────────────────────────────────────────────┘
도입 버전: v22.10.0
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 │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘
도입 버전: v1.1.0
URL에 앞부분의 www.가 있으면 이를 제거한 도메인을 반환합니다.
구문
인수
반환 값
입력 문자열을 URL로 파싱할 수 있으면 도메인 이름(앞의 www. 제외)을 반환하고, 그렇지 않으면 빈 문자열을 반환합니다. String
예시
사용 예시
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘
도입 버전: v1.1.0
앞에 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.0
일반 문자열을 받아 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.0
문자열을 form 인코딩 규칙(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.0
URL에 name 매개변수가 있으면 해당 값을 반환하고, 없으면 빈 문자열을 반환합니다.
같은 이름의 매개변수가 여러 개 있으면 첫 번째 값을 반환합니다.
이 함수는 url 매개변수에 포함된 매개변수가 name 인수와 동일한 방식으로 인코딩되어 있다고 가정합니다.
구문
extractURLParameter(url, name)
인수
반환 값
지정된 이름의 URL 매개변수 값을 반환합니다. String
예시
사용 예시
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1 │
└──────────────────────────┘
도입 버전: v1.1.0
URL 매개변수 이름에 해당하는 문자열 배열을 반환합니다.
값은 디코딩되지 않습니다.
구문
extractURLParameterNames(url)
인수
반환 값
URL 매개변수 이름에 해당하는 문자열 배열을 반환합니다. Array(String)
예시
사용 예시
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2'] │
└──────────────────────────┘
도입 버전: v1.1.0
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
도입 버전: v1.1.0
“첫 번째로 의미 있는 하위 도메인”을 반환합니다.
첫 번째로 의미 있는 하위 도메인은 ‘com’, ‘net’, ‘org’ 또는 ‘co’인 경우 2단계 도메인입니다.
그렇지 않으면 3단계 도메인입니다.
예를 들어, firstSignificantSubdomain(‘https://news.clickhouse.com/') = ‘clickhouse’이고, firstSignificantSubdomain (‘https://news.clickhouse.com.tr/') = ‘clickhouse’입니다.
“중요하지 않은” 2단계 도메인 목록과 기타 구현 세부 사항은 향후 변경될 수 있습니다.
구문
firstSignificantSubdomain(url)
인수
반환 값
예시
firstSignificantSubdomain
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
firstSignificantSubdomainCustom
도입 버전: v21.1.0
사용자 지정 TLD(최상위 도메인) 목록을 사용해 URL의 첫 번째 유의미한 하위 도메인을 반환합니다. 사용자 지정 TLD 목록 이름은 어떤 도메인 접미사를 최상위 도메인으로 처리할지 정의하는 구성(configuration)을 가리킵니다. 이는 비표준 TLD 계층 구조를 다룰 때 유용합니다. 이 함수는 프로토콜과 그 뒤의 모든 내용이 제거되었다고 가정하는 단순화된 URL 파싱 알고리즘을 사용합니다.
구문
firstSignificantSubdomainCustom(url, tld_list_name)
인수
url — 하위 도메인을 추출할 URL입니다. String
tld_list_name — 구성에 정의된 사용자 지정 TLD 목록의 이름입니다. String
반환 값
첫 번째 유의미한 하위 도메인을 반환합니다. String
예시
기본 사용법
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
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')
firstSignificantSubdomainRFC
도입 버전: v22.10.0
RFC 1034에 따라 “첫 번째 의미 있는 하위 도메인”을 반환합니다.
구문
firstSignificantSubdomainRFC(url)
인수
반환 값
예시
도입 버전: v1.1.0
맨 앞의 # 기호를 제외한 프래그먼트 식별자를 반환합니다.
구문
인수
반환 값
앞의 해시 기호를 제외한 프래그먼트 식별자를 반환합니다. 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 │
└───────────────────────────────┘
도입 버전: v20.5.0
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 │
└──────────────────────────┘
지원 시작 버전: v1.1.0
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/ │
└──────────────────────────────────────────────────────────────────────────────────────┘
지원 시작 버전: v1.1.0
path와 동일하지만 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 │
└──────────────────────────────────────────────────────────────────┘
도입 버전: v20.5.0
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 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘
도입 버전: v22.10.0
URL에 포트가 없거나 파싱할 수 없으면 default_port를, 그렇지 않으면 포트를 반환합니다.
port와 유사하지만 RFC 3986을 준수합니다.
구문
portRFC(url[, default_port])
인수
url — URL입니다. String
default_port — 선택 사항입니다. 반환할 기본 포트 번호입니다. 기본값은 0입니다. UInt16
반환 값
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 │
└──────────────────────────┴──────────────────────────┘
지원 시작 버전: v1.1.0
URL에서 프로토콜을 추출합니다.
일반적인 반환 값 예시: http, https, ftp, mailto, tel, magnet.
구문
인수
반환 값
URL의 프로토콜을 반환하며, 이를 확인할 수 없으면 빈 문자열을 반환합니다. String
예시
사용 예시
SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘
도입 버전: v1.1.0
URL의 쿼리 문자열에서 맨 앞의 물음표와 # 및 그 뒤의 모든 내용을 제외한 값을 반환합니다.
구문
인수
반환 값
URL의 쿼리 문자열에서 앞의 물음표(?)와 프래그먼트를 제외한 값을 반환합니다. String
예시
사용 예시
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryString(⋯3#section')─┐
│ query=value¶m=123 │
└──────────────────────────┘
도입 버전: v1.1.0
URL의 쿼리 문자열과 프래그먼트 식별자를 반환합니다.
구문
queryStringAndFragment(url)
인수
반환 값
URL의 쿼리 문자열과 프래그먼트 식별자를 반환합니다. String
예시
사용 예시
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value¶m=123#section │
└───────────────────────────────┘
도입 버전: 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/
구문
인수
반환 값
입력 문자열을 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을 준수합니다.
구문
인수
반환 값
입력 문자열을 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 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘