- 类别:
字符串和二进制函数 (通用)
PARSE_URL¶
返回一个 JSON 对象,它由有效输入 URL/URI 中的所有部分(片段、主机、路径、端口、查询、方案)组成。
语法¶
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。将 permissive
参数设置为 0,以指示如果输入无效,函数应失败:
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" | | } | +----------------------------------------------------------+