- カテゴリ:
文字列とバイナリ関数 (一般)
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, 'https://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 | https://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": "https" |
| } |
| { |
| "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 | https://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
無効な URL を解析します。 permissive
引数が 1
に設定され、関数がエラーメッセージを含む OBJECT 値を返すことを示します。
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" |
| } |
+----------------------------------------------------------+