- カテゴリ:
文字列とバイナリ関数 (一般)
PARSE_URL¶
有効な入力 URL/URIのすべてのコンポーネント(フラグメント、ホスト、パス、ポート、クエリ、スキーム)で構成される JSON オブジェクトを返します。
構文¶
PARSE_URL(<string>, [<permissive>])
引数¶
必須:
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" | | } | +-----------------------------------------+
パスとポート番号を含む 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" | | } | +-----------------------------------------------------------------+
メールの 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" | | } | +---------------------------------+
スキームが欠落している無効な URL を解析します。入力が無効な場合に関数が失敗することを示すために、0に設定された permissive
パラメーターを設定します。
SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 0);100139 (22000): Error parsing URL: scheme not specified
無効な 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" | | } | +----------------------------------------------------------+