カテゴリ:

文字列とバイナリ関数 (一般)

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 を解析します。入力が無効な場合に関数が失敗することを示すために、0に設定された permissive パラメーターを設定します。

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

無効な URLを解析し、 permissive パラメーターを1に設定して、関数が JSON 形式のエラーメッセージを含むオブジェクトを返す必要があることを示します。

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