URL 함수
URL 함수 (URL Functions)
이 문서는 스칼라 함수로 제공되는 URL 유틸리티 함수를 설명해요. 이 함수들은 프로토콜, 도메인, 포트, 경로, 쿼리 파라미터 등 URL의 다양한 구성 요소를 추출·변환·조작할 수 있게 해줍니다.
출처: 문서
본문
urlProtocol
설명: URL에서 프로토콜(스킴)을 추출해요.
문법:
urlProtocol(url: String) → String
파라미터:
• url: URL 문자열.
반환:
프로토콜(예: "http", "https") 또는 URL이 유효하지 않으면 null.
예시:
SELECT urlProtocol('https://example.com/path');
// Returns: "https"
urlDomain
설명: URL에서 도메인을 추출해요.
문법:
urlDomain(url: String) → String
파라미터:
• url: URL 문자열.
반환:
전체 도메인(예: "www.example.com") 또는 URL이 유효하지 않으면 null.
예시:
SELECT urlDomain('https://www.example.com/path');
// Returns: "www.example.com"
urlDomainWithoutWWW
설명: 존재하는 경우 선행 "www."를 제거하며 URL에서 도메인을 추출해요.
문법:
urlDomainWithoutWWW(url: String) → String
파라미터:
• url: URL 문자열.
반환:
"www." 접두사가 없는 도메인(예: "example.com") 또는 유효하지 않으면 null.
예시:
SELECT urlDomainWithoutWWW('https://www.example.com/path');
// Returns: "example.com"
urlTopLevelDomain
설명: URL에서 최상위 도메인(TLD)을 추출해요.
문법:
urlTopLevelDomain(url: String) → String
파라미터:
• url: URL 문자열.
반환:
최상위 도메인(예: "com", "org") 또는 유효하지 않으면 null.
예시:
SELECT urlTopLevelDomain('https://example.com/path');
// Returns: "com"
urlFirstSignificantSubdomain
설명: 표준 TLD 규칙에 따라 URL에서 첫 번째 유의미한 서브도메인을 추출해요.
문법:
urlFirstSignificantSubdomain(url: String) → String
파라미터:
• url: URL 문자열.
반환:
첫 번째 유의미한 서브도메인(예: "blog.example.com"에 대해 "example" 반환) 또는 유효하지 않으면 null.
예시:
SELECT urlFirstSignificantSubdomain('https://blog.example.com');
// Returns: "example"
참고: 이 로직은 "com", "net", "org", "co" 같은 일반 TLD를 고려합니다.
cutToFirstSignificantSubdomain
설명: URL의 도메인을 첫 번째 유의미한 서브도메인과 최상위 도메인만 포함하도록 잘라요.
문법:
cutToFirstSignificantSubdomain(url: String) → String
파라미터:
• url: URL 문자열.
반환:
"example.com" 같은 잘린 도메인(비표준 TLD의 경우 더 깊은 계층) 또는 유효하지 않으면 null.
예시:
SELECT cutToFirstSignificantSubdomain('https://blog.example.com');
// Returns: "example.com"
cutToFirstSignificantSubdomainWithWWW
설명: cutToFirstSignificantSubdomain와 유사하지만 URL의 일부인 경우 선행 "www."를 보존해요.
문법:
cutToFirstSignificantSubdomainWithWWW(url: String) → String
파라미터:
• url: URL 문자열.
반환:
"www."를 보존한 잘린 도메인(해당하는 경우) 또는 유효하지 않으면 null.
예시:
SELECT cutToFirstSignificantSubdomainWithWWW('https://www.blog.example.com');
// Returns: "www.example.com"
urlPort
설명: URL에서 포트 번호를 추출해요.
문법:
urlPort(url: String) → int
파라미터:
• url: URL 문자열.
반환:
포트 번호, 또는 포트가 지정되지 않았거나 URL이 유효하지 않으면 -1.
예시:
SELECT urlPort('https://example.com:8080/path');
// Returns: 8080
urlPath
설명: URL에서 경로 구성 요소를 추출해요(쿼리 문자열 제외).
문법:
urlPath(url: String) → String
파라미터:
• url: URL 문자열.
반환:
URL 경로(예: "/path/to/resource") 또는 유효하지 않으면 null.
예시:
SELECT urlPath('https://example.com/path?query=1');
// Returns: "/path"
urlPathWithQuery
설명: URL에서 경로 구성 요소를 추출해요. (URI 파서가 반환한 raw 경로를 사용합니다.)
문법:
urlPathWithQuery(url: String) → String
파라미터:
• url: URL 문자열.
반환:
쿼리 인코딩 세부 사항을 포함할 수 있는 URL 경로 또는 유효하지 않으면 null.
예시:
SELECT urlPathWithQuery('https://example.com/path?query=1');
// Returns: "/path"
urlQueryString
설명: URL에서 선행 ? 및 fragment를 제외한 쿼리 문자열을 추출해요.
문법:
urlQueryString(url: String) → String
파라미터:
• url: URL 문자열.
반환:
쿼리 문자열(예: "key=value&key2=value2") 또는 없거나 유효하지 않으면 null.
예시:
SELECT urlQueryString('https://example.com/path?key=value#section');
// Returns: "key=value"
urlFragment
설명: URL에서 fragment 식별자를 추출해요(# 기호 제외).
문법:
urlFragment(url: String) → String
파라미터:
• url: URL 문자열.
반환:
fragment(예: "section") 또는 유효하지 않거나 없으면 null.
예시:
SELECT urlFragment('https://example.com/path#section');
// Returns: "section"
urlQueryStringAndFragment
설명: URL의 쿼리 문자열과 fragment 식별자를 단일 문자열로 결합해요.
문법:
urlQueryStringAndFragment(url: String) → String
파라미터:
• url: URL 문자열.
반환:
"key=value#section" 같은 결합 문자열 또는 두 구성 요소가 모두 없으면 null.
예시:
SELECT urlQueryStringAndFragment('https://example.com/path?key=value#section');
// Returns: "key=value#section"
extractURLParameter
설명: URL에서 특정 쿼리 파라미터의 값을 추출해요. 같은 이름의 파라미터가 여러 개 있으면 첫 번째 발생을 반환합니다.
문법:
extractURLParameter(url: String, name: String) → String
파라미터:
• url: URL 문자열.
• name: 추출할 파라미터 이름.
반환:
파라미터 값, 또는 찾지 못했거나 URL이 유효하지 않으면 빈 문자열.
예시:
SELECT extractURLParameter('https://example.com/path?page=1&lr=213', 'page');
// Returns: "1"
extractURLParameters
설명: URL에서 모든 쿼리 파라미터를 name=value 쌍 배열로 추출해요.
문법:
extractURLParameters(url: String) → String[]
파라미터:
• url: URL 문자열.
반환:
쿼리 파라미터 배열(예: ["page=1", "lr=213"]) 또는 파라미터가 없으면 빈 배열.
예시:
SELECT extractURLParameters('https://example.com/path?page=1&lr=213');
// Returns: ["page=1", "lr=213"]
extractURLParameterNames
설명: URL에 있는 모든 쿼리 파라미터의 이름을 추출해요.
문법:
extractURLParameterNames(url: String) → String[]
파라미터:
• url: URL 문자열.
반환:
파라미터 이름 배열(예: ["page", "lr"]) 또는 쿼리 파라미터가 없으면 빈 배열.
예시:
SELECT extractURLParameterNames('https://example.com/path?page=1&lr=213');
// Returns: ["page", "lr"]
urlHierarchy
설명: 경로의 각 수준에서 잘린 URL 계층을 생성해요. 기본 URL(스킴과 호스트)은 항상 포함됩니다.
문법:
urlHierarchy(url: String) → String[]
파라미터:
• url: URL 문자열.
반환:
계층적 수준을 나타내는 URL 배열. 예를 들어 URL "https://example.com/a/b/c"가 주어지면:
[
"https://example.com",
"https://example.com/a",
"https://example.com/a/b",
"https://example.com/a/b/c"
]
예시:
SELECT urlHierarchy('https://example.com/a/b/c');
// Returns: ["https://example.com", "https://example.com/a", "https://example.com/a/b", "https://example.com/a/b/c"]
urlPathHierarchy
설명: URL에서 경로 세그먼트의 계층을 생성해요. 프로토콜과 호스트는 제외되고 루트("/")는 포함되지 않습니다.
문법:
urlPathHierarchy(url: String) → String[]
파라미터:
• url: URL 문자열.
반환:
계층적 경로 세그먼트 배열. 예를 들어 URL "https://example.com/browse/CONV-6788"의 경우:
["/browse", "/browse/CONV-6788"]
예시:
SELECT urlPathHierarchy('https://example.com/browse/CONV-6788');
// Returns: ["/browse", "/browse/CONV-6788"]
urlEncode
설명: URL 문자열을 URL 안전 형식으로 인코딩해요. 공백은 +로 대체됩니다.
문법:
urlEncode(url: String) → String
파라미터:
• url: 인코딩할 URL 문자열.
반환:
URL 인코딩된 문자열 또는 입력이 유효하지 않으면 null.
예시:
SELECT urlEncode('https://example.com/path with space');
// Returns: "https%3A%2F%2Fexample.com%2Fpath+with+space"
urlDecode
설명: URL 인코딩된 문자열을 디코딩해요.
문법:
urlDecode(url: String) → String
파라미터:
• url: URL 인코딩된 문자열.
반환:
디코딩된 URL 문자열 또는 입력이 유효하지 않으면 null.
예시:
SELECT urlDecode('https%3A%2F%2Fexample.com%2Fpath+with+space');
// Returns: "https://example.com/path with space"