URL 함수

URL 함수 (URL functions)

URL의 특정 부분을 추출하거나 제거하는 함수들이에요. 대부분 최대 성능에 맞게 최적화되어 RFC-3986 표준을 따르지 않습니다. 아래 문서는 system.functions 시스템 테이블에서 생성된 내용입니다.

출처: 문서

본문

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

사용자 문자열이나 @ 기호를 포함하지 않는 공개 등록 도메인을 다룰 때는 non-RFC 함수 변형을 사용해도 됩니다. 아래 표는 URL의 각 기호를 각 RFC 및 non-RFC 변형이 파싱할 수 있는지() 없는지()를 자세히 보여줍니다:

기호 non-RFC RFC
' '
\t
<
>
% ✔*
{
}
|
\
^
~ ✔*
[
]
; ✔*
= ✔*
& ✔*

*로 표시된 기호는 RFC 3986에서 sub-delimiter이며 @ 기호 뒤의 user info에 허용됩니다.

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

  • URL의 일부를 추출하는 함수. 관련 부분이 URL에 없으면 빈 문자열을 반환합니다.
  • URL의 일부를 제거하는 함수. 이와 비슷한 것이 없으면 URL은 그대로 유지됩니다.

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

URLHierarchy

도입 버전: v1.1.0

경로와 쿼리 문자열에서 /, ?, # 기호로 끝을 자른 URL을 담은 배열을 반환합니다. 연속된 구분 문자는 하나로 셉니다. 결과는 프로토콜과 호스트를 첫 요소로 포함하며, 점점 길어지는 경로가 계층을 이룹니다.

구문

URLHierarchy(url)

인자

  • url — 처리할 URL. String

반환 값

점점 길어지는 URL 배열(계층 구조). Array(String)

예제 — 기본 사용

Query

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

Response

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

URLPathHierarchy

도입 버전: v1.1.0

/, ?, # 기호로 끝을 자른 URL의 경로 성분을 담은 배열을 반환합니다. URLHierarchy와 달리 결과는 프로토콜과 호스트를 포함하지 않으며 경로에서 시작합니다. 연속 구분 문자는 하나로 셉니다.

구문

URLPathHierarchy(url)

인자

  • url — 처리할 URL. String

반환 값

점점 길어지는 URL 경로 성분 배열(계층 구조). Array(String)

예제 — 기본 사용

Query

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

Response

['/a/','/a/b?','/a/b?c=1']

cutFragment

도입 버전: v1.1.0

URL에서 샾 기호를 포함한 프래그먼트 식별자를 제거합니다.

구문

cutFragment(url)

인자

반환 값

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

예제 — 사용 예시

Query

SELECT cutFragment('http://example.com/path?query=value#fragment123');

Response

http://example.com/path?query=value

cutQueryString

도입 버전: v1.1.0

URL에서 쿼리 문자열을 제거합니다.

구문

cutQueryString(url)

인자

반환 값

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

예제 — 사용 예시

Query

SELECT cutQueryString('http://example.com/path?query=value');

Response

http://example.com/path

cutQueryStringAndFragment

도입 버전: v1.1.0

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

구문

cutQueryStringAndFragment(url)

인자

반환 값

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

cutToFirstSignificantSubdomain

도입 버전: v1.1.0

URL에서 "첫 번째 유효 서브도메인"의 시작 부분부터 잘라냅니다. www 같은 공개 2차 레벨 도메인과 같은 무의미한 도메인은 제거하고, 잘 알려진 접두사 목록에 따라 도메인의 최하위 부분부터 남깁니다.

구문

cutToFirstSignificantSubdomain(url)

인자

반환 값

유효 서브도메인부터 시작하는 절단된 URL을 반환합니다. String

예제

Query

SELECT cutToFirstSignificantSubdomain('https://www.example.com/path');

Response

example.com/path

cutToFirstSignificantSubdomainCustom

도입 버전: v23.8.0

커스텀 공개 접미사 목록을 사용해 "첫 번째 유효 서브도메인" 시작 부분부터 잘라냅니다.

구문

cutToFirstSignificantSubdomainCustom(url, custom_suffixes)

인자

  • url — URL. String
  • custom_suffixes — 사용자 지정 공개 접미사. String

반환 값

절단된 URL을 반환합니다. String

cutToFirstSignificantSubdomainCustomRFC

도입 버전: v23.8.0

RFC-3986 호환 방식으로, 커스텀 접미사 목록을 사용해 "첫 번째 유효 서브도메인" 시작 부분부터 잘라냅니다.

구문

cutToFirstSignificantSubdomainCustomRFC(url, custom_suffixes)

cutToFirstSignificantSubdomainCustomWithWWW

도입 버전: v23.8.0

www 접두사를 유지하면서 커스텀 접미사를 사용합니다.

구문

cutToFirstSignificantSubdomainCustomWithWWW(url, custom_suffixes)

cutToFirstSignificantSubdomainCustomWithWWWRFC

도입 버전: v23.8.0

www 접두사를 유지하면서 RFC-3986 호환 방식으로 커스텀 접미사를 사용합니다.

구문

cutToFirstSignificantSubdomainCustomWithWWWRFC(url, custom_suffixes)

cutToFirstSignificantSubdomainRFC

도입 버전: v1.1.0

RFC-3986 호환 방식으로 "첫 번째 유효 서브도메인" 시작 부분부터 잘라냅니다.

구문

cutToFirstSignificantSubdomainRFC(url)

cutToFirstSignificantSubdomainWithWWW

도입 버전: v1.1.0

www 접두사를 유지하면서 "첫 번째 유효 서브도메인" 시작 부분부터 잘라냅니다.

구문

cutToFirstSignificantSubdomainWithWWW(url)

cutToFirstSignificantSubdomainWithWWWRFC

도입 버전: v1.1.0

s 접두사를 유지하면서 RFC-3986 호환 방식으로 "첫 번째 유효 서브도메인" 시작 부분부터 잘라냅니다.

구문

cutToFirstSignificantSubdomainWithWWWRFC(url)

cutURLParameter

도입 버전: v1.1.0

URL에서 지정된 쿼리 문자열 파라미터를 제거합니다.

구문

cutURLParameter(url, name)

인자

  • url — URL. String
  • name — 제거할 쿼리 파라미터 이름. String

반환 값

지정된 파라미터가 제거된 URL을 반환합니다. String

예제

Query

SELECT cutURLParameter('http://example.com/path?query=value&tag=test', 'tag');

Response

http://example.com/path?query=value

cutWWW

도입 버전: v1.1.0

URL에서 "www"를 제거합니다. 존재하지 않으면 URL을 변경하지 않습니다.

구문

cutWWW(url)

인자

반환 값

www가 없는 URL을 반환합니다. String

예제

Query

SELECT cutWWW('http://www.example.com/');

Response

http://example.com/

decodeURLComponent

도입 버전: v1.1.0

URL 인코딩된 성분을 디코딩합니다.

구문

decodeURLComponent(url)

인자

반환 값

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

예제

Query

SELECT decodeURLComponent('http://example.com/a%20b');

Response

http://example.com/a b

decodeURLFormComponent

도입 버전: v1.1.0

URL 폼 인코딩된 성분을 디코딩합니다(+를 공백으로 변환).

구문

decodeURLFormComponent(url)

인자

반환 값

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

domain

도입 버전: v1.1.0

URL의 호스트 이름 부분을 추출합니다.

구문

domain(url)

인자

반환 값

호스트 이름 또는 지정된 호스트가 없는 경우 빈 문자열을 반환합니다. String

예제

Query

SELECT domain('http://www.example.com/path');

Response

www.example.com

domainRFC

도입 버전: v1.1.0

RFC-3986 호환 방식으로 URL의 호스트 이름 부분을 추출합니다.

구문

domainRFC(url)

인자

반환 값

호스트 이름을 반환합니다. String

domainWithoutWWW

도입 버전: v1.1.0

URL의 호스트 이름 부분을 "www" 없이 추출합니다.

구문

domainWithoutWWW(url)

인자

반환 값

www 없는 호스트 이름을 반환합니다. String

domainWithoutWWWRFC

도입 버전: v1.1.0

RFC-3986 호환 방식으로 URL의 호스트 이름 부분을 "www" 없이 추출합니다.

구문

domainWithoutWWWRFC(url)

encodeURLComponent

도입 버전: v1.1.0

URL 성분을 인코딩합니다.

구문

encodeURLComponent(url)

인자

반환 값

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

예제

Query

SELECT encodeURLComponent('http://example.com/a b');

Response

http%3A%2F%2Fexample.com%2Fa%20b

encodeURLFormComponent

도입 버전: v1.1.0

URL 폼 성분을 인코딩합니다(공백을 +로 변환).

구문

encodeURLFormComponent(url)

인자

반환 값

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

extractURLParameter

도입 버전: v1.1.0

URL에서 쿼리 문자열 파라미터의 값을 추출합니다.

구문

extractURLParameter(url, name)

인자

  • url — URL. String
  • name — 추출할 쿼리 파라미터 이름. String

반환 값

지정된 파라미터의 값 또는 지정된 파라미터가 없는 경우 빈 문자열을 반환합니다. String

예제

Query

SELECT extractURLParameter('http://example.com/path?query=value', 'query');

Response

value

extractURLParameterNames

도입 버전: v1.1.0

URL의 쿼리 문자열 파라미터 이름 배열을 추출합니다.

구문

extractURLParameterNames(url)

인자

반환 값

파라미터 이름 배열을 반환합니다. Array(String)

예제

Query

SELECT extractURLParameterNames('http://example.com/path?query=value&tag=test');

Response

['query','tag']

extractURLParameters

도입 버전: v1.1.0

URL의 쿼리 문자열 파라미터 값을 배열로 추출합니다.

구문

extractURLParameters(url)

인자

반환 값

파라미터 값 배열을 반환합니다. Array(String)

예제

Query

SELECT extractURLParameters('http://example.com/path?query=value&tag=test');

Response

['value','test']

firstSignificantSubdomain

도입 버전: v1.1.0

URL에서 "첫 번째 유효 서브도메인"을 추출합니다. 잘 알려진 접두사 목록에 따라 왼쪽에서 접두사를 제거한 가장 오른쪽 의미 있는 부분을 반환합니다.

구문

firstSignificantSubdomain(url)

인자

반환 값

첫 번째 유효 서브도메인 이름을 반환합니다. String

firstSignificantSubdomainCustom

도입 버전: v23.8.0

커스텀 공개 접미사 목록을 사용해 "첫 번째 유효 서브도메인"을 추출합니다.

구문

firstSignificantSubdomainCustom(url, custom_suffixes)

firstSignificantSubdomainCustomRFC

도입 버전: v23.8.0

RFC-3986 호환 방식으로 커스텀 접미사 목록을 사용해 추출합니다.

구문

firstSignificantSubdomainCustomRFC(url, custom_suffixes)

firstSignificantSubdomainRFC

도입 버전: v1.1.0

RFC-3986 호환 방식으로 "첫 번째 유효 서브도메인"을 추출합니다.

구문

firstSignificantSubdomainRFC(url)

fragment

도입 버전: v1.1.0

URL의 프래그먼트 식별자를 추출합니다.

구문

fragment(url)

인자

반환 값

프래그먼트 식별자 또는 없으면 빈 문자열을 반환합니다. String

예제

Query

SELECT fragment('http://example.com/path#fragment');

Response

fragment

netloc

도입 버전: v1.1.0

URL에서 네트워크 위치(netloc)를 추출합니다(호스트와 포트).

구문

netloc(url)

인자

반환 값

netloc를 반환합니다. String

path

도입 버전: v1.1.0

URL의 경로를 추출합니다.

구문

path(url)

인자

반환 값

경로를 반환합니다. String

예제

Query

SELECT path('http://example.com/path?query=value');

Response

/path

pathFull

도입 버전: v1.1.0

URL의 경로와 쿼리 문자열을 포함한 전체를 추출합니다.

구문

pathFull(url)

인자

반환 값

경로와 쿼리 문자열을 반환합니다. String

port

도입 버전: v1.1.0

URL의 포트를 추출합니다.

구문

port(url)

인자

반환 값

포트 번호를 반환합니다. 없으면 빈 문자열. String

portRFC

도입 버전: v1.1.0

RFC-3986 호환 방식으로 URL의 포트를 추출합니다.

구문

portRFC(url)

protocol

도입 버전: v1.1.0

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

구문

protocol(url)

인자

반환 값

프로토콜을 반환합니다. String

예제

Query

SELECT protocol('http://example.com/path');

Response

http

queryString

도입 버전: v1.1.0

URL의 쿼리 문자열을 추출합니다.

구문

queryString(url)

인자

반환 값

쿼리 문자열을 반환합니다. String

예제

Query

SELECT queryString('http://example.com/path?query=value');

Response

query=value

queryStringAndFragment

도입 버전: v1.1.0

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

구문

queryStringAndFragment(url)

인자

반환 값

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

topLevelDomain

도입 버전: v1.1.0

URL의 최상위 도메인(TLD) 이름을 추출합니다.

구문

topLevelDomain(url)

인자

반환 값

최상위 도메인 이름을 반환합니다. String

예제

Query

SELECT topLevelDomain('http://www.example.com/path');

Response

com

topLevelDomainRFC

도입 버전: v1.1.0

RFC-3986 호환 방식으로 최상위 도메인 이름을 추출합니다.

구문

topLevelDomainRFC(url)

인자

반환 값

최상위 도메인 이름을 반환합니다. String

더 알아보기 (Learn more)