카테고리:

문자열 및 이진 함수 (일반)

PARSE_URL

유효한 입력 URL/URI의 모든 구성 요소(조각, 호스트, 경로, 포트, 쿼리, 체계)로 구성된 JSON 오브젝트를 반환합니다.

구문

PARSE_URL(<string>, [<permissive>])
Copy

인자

필수:

string

구문 분석할 문자열입니다.

선택 사항:

permissive

구문 분석 오류가 처리되는 방법을 결정하는 플래그:

  • 0으로 설정하는 경우, 구문 분석 오류로 인해 함수가 실패합니다.

  • 1로 설정하면 구문 분석 오류의 결과, error 필드가 해당 오류 메시지로 설정된 오브젝트가 생성됩니다(다른 필드는 설정되지 않음).

기본값은 0입니다.

반환

반환된 값의 데이터 타입은 OBJECT 입니다. 오브젝트에는 JSON이 포함됩니다.

간단한 URL을 구문 분석합니다.

SELECT PARSE_URL('https://www.snowflake.com/');
+-----------------------------------------+
| PARSE_URL('HTTPS://WWW.SNOWFLAKE.COM/') |
|-----------------------------------------|
| {                                       |
|   "fragment": null,                     |
|   "host": "www.snowflake.com",          |
|   "parameters": null,                   |
|   "path": "",                           |
|   "port": null,                         |
|   "query": null,                        |
|   "scheme": "https"                     |
| }                                       |
+-----------------------------------------+
Copy

경로와 포트 번호가 포함된 URL을 구문 분석합니다.

SELECT PARSE_URL('HTTP://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1');
+-----------------------------------------------------------------+
| PARSE_URL('HTTP://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1') |
|-----------------------------------------------------------------|
| {                                                               |
|   "fragment": null,                                             |
|   "host": "USER:PASS@EXAMPLE.INT",                              |
|   "parameters": {                                               |
|     "USER": "1"                                                 |
|   },                                                            |
|   "path": "HELLO.PHP",                                          |
|   "port": "4345",                                               |
|   "query": "USER=1",                                            |
|   "scheme": "HTTP"                                              |
| }                                                               |
+-----------------------------------------------------------------+
Copy

이메일 URL을 구문 분석합니다.

SELECT PARSE_URL('mailto:abc@xyz.com');
+---------------------------------+
| PARSE_URL('MAILTO:ABC@XYZ.COM') |
|---------------------------------|
| {                               |
|   "fragment": null,             |
|   "host": null,                 |
|   "parameters": null,           |
|   "path": "abc@xyz.com",        |
|   "port": null,                 |
|   "query": null,                |
|   "scheme": "mailto"            |
| }                               |
+---------------------------------+
Copy

스키마가 누락된 잘못된 URL을 구문 분석합니다. 입력이 유효하지 않은 경우 함수가 실패해야 함을 나타내기 위해 permissive 매개 변수를 0으로 설정합니다.

SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 0);
Copy
100139 (22000): Error parsing URL: scheme not specified
Copy

함수가 JSON 형식의 오류 메시지가 포함된 오브젝트를 반환해야 함을 나타내기 위해 permissive 매개 변수를 1로 설정하여 잘못된 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"                        |
| }                                                        |
+----------------------------------------------------------+
Copy