- 카테고리:
문자열 및 이진 함수 (일반)
PARSE_URL¶
유효한 입력 URL/URI 의 모든 구성 요소(조각, 호스트, 매개 변수, 경로, 포트, 쿼리, 스키마)로 구성된 OBJECT 값을 반환합니다.
구문¶
PARSE_URL(<string>, [<permissive>])
인자¶
필수:
string
구문 분석할 문자열입니다.
선택 사항:
permissive
구문 분석 오류가 처리되는 방법을 결정하는 플래그:
0
으로 설정하면 구문 분석 오류로 인해 함수가 실패합니다.1
로 설정된 경우 구문 분석 오류는error
필드가 해당 오류 메시지로 설정된 오브젝트를 생성합니다(다른 필드는 설정되지 않음).
기본값은
0
입니다.
반환¶
함수는 OBJECT 형식의 값을 반환합니다.
입력 인자가 NULL 인 경우 함수는 NULL 을 반환합니다.
OBJECT 값이 반환되면 다음과 같은 키-값 페어가 포함됩니다.
키 |
값 |
---|---|
|
위치를 가리키는 앵커. |
|
도메인(웹사이트 또는 서버의 주소). |
|
웹사이트 또는 서버로 전달된 값. |
|
리소스의 위치. |
|
포트(프로세스 또는 서비스의 연결 엔드포인트). |
|
웹사이트 또는 서버에 전달된 쿼리 문자열. |
|
프로토콜. |
예¶
다음 예제에서는 PARSE_URL 함수를 사용합니다.
테이블 데이터에서 URLs 구문 분석하기¶
테이블을 만들고 행을 삽입합니다.
CREATE OR REPLACE TABLE parse_url_test (id INT, sample_url VARCHAR);
INSERT INTO parse_url_test VALUES
(1, 'mailto:abc@xyz.com'),
(2, 'http://www.snowflake.com/'),
(3, 'http://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1'),
(4, NULL);
SELECT * FROM parse_url_test;
+----+----------------------------------------------------+
| ID | SAMPLE_URL |
|----+----------------------------------------------------|
| 1 | mailto:abc@xyz.com |
| 2 | http://www.snowflake.com/ |
| 3 | http://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1 |
| 4 | NULL |
+----+----------------------------------------------------+
다음 쿼리는 샘플 URLs 에 대한 PARSE_URL 의 결과를 보여줍니다.
SELECT PARSE_URL(sample_url) FROM parse_url_test;
+------------------------------------+
| PARSE_URL(SAMPLE_URL) |
|------------------------------------|
| { |
| "fragment": null, |
| "host": null, |
| "parameters": null, |
| "path": "abc@xyz.com", |
| "port": null, |
| "query": null, |
| "scheme": "mailto" |
| } |
| { |
| "fragment": null, |
| "host": "www.snowflake.com", |
| "parameters": null, |
| "path": "", |
| "port": null, |
| "query": null, |
| "scheme": "http" |
| } |
| { |
| "fragment": null, |
| "host": "USER:PASS@EXAMPLE.INT", |
| "parameters": { |
| "USER": "1" |
| }, |
| "path": "HELLO.PHP", |
| "port": "4345", |
| "query": "USER=1", |
| "scheme": "http" |
| } |
| NULL |
+------------------------------------+
이 쿼리는 각 샘플 URL 의 호스트를 보여줍니다.
SELECT PARSE_URL(sample_url):host FROM parse_url_test;
+----------------------------+
| PARSE_URL(SAMPLE_URL):HOST |
|----------------------------|
| null |
| "www.snowflake.com" |
| "USER:PASS@EXAMPLE.INT" |
| NULL |
+----------------------------+
포트가 4345
인 행을 반환합니다.
SELECT *
FROM parse_url_test
WHERE PARSE_URL(sample_url):port = '4345';
+----+----------------------------------------------------+
| ID | SAMPLE_URL |
|----+----------------------------------------------------|
| 3 | http://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1 |
+----+----------------------------------------------------+
호스트가 www.snowflake.com
인 행을 반환합니다.
SELECT *
FROM parse_url_test
WHERE PARSE_URL(sample_url):host = 'www.snowflake.com';
+----+----------------------------+
| ID | SAMPLE_URL |
|----+----------------------------|
| 2 | http://www.snowflake.com/ |
+----+----------------------------+
잘못된 URLs 구문 분석¶
스키마가 누락된 잘못된 URL을 구문 분석합니다. permissive
인자를 0
으로 설정하여 입력이 유효하지 않은 경우 함수가 실패함을 나타냅니다.
SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 0);
100139 (22000): Error parsing URL: scheme not specified
permissive
인자를 1
로 설정하여 함수가 오류 메시지가 포함된 OBJECT 값을 반환하도록 잘못된 URL 을 구문 분석합니다.
SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 1);
+----------------------------------------------------------+
| PARSE_URL('EXAMPLE.INT/HELLO.PHP?USER=12#NOFRAGMENT', 1) |
|----------------------------------------------------------|
| { |
| "error": "scheme not specified" |
| } |
+----------------------------------------------------------+