Presto | URL 相关函数
提取相关函数
URL 提取功能可以从 HTTP URLs(或任何符合 RFC 2396 的有效 URI)中提取各组成部分。支持以下语法:
1 | [protocol:][//host[:port]][path][?query][#fragment] |
所提取的组成部分不包含 URI 语法分隔符,例如::
或 ?
。
url_extract_fragment(url) → varchar
该函数用以返回 url
地址所包含的,用以指示不同文档片段的片段标识符。
即上文提到的 [#fragment]
组成部分,指的是 #
字符之后的内容,不包含 #
符号本身。
url_extract_host(url) → varchar
该函数用以解析 url
中包含的地址,并返回其主机名部分。
url_extract_parameter(url, name) → varchar
该函数用以解析 url
中的查询字符串,并返回第一个名为 name
的参数的值。参数提取遵循 RFC 1866 中规定的方式。
url_extract_path(url) → varchar
该函数用于解析 url
中包含的地址,并返回其路径部分。
url_extract_port(url) → bigint
该函数用于解析 url
中包含的地址,并返回其端口号部分。
url_extract_protocol(url) → varchar
该函数用于解析 url
中包含的地址,并返回其所使用的协议类型。
url_extract_query(url) → varchar
该函数用于解析 url
中包含的地址,并返回其查询字符串部分。
示例
1 | with tmp_url as ( |
返回结果如下:
protocol | host | port | path | query | parameter | fragment |
---|---|---|---|---|---|---|
https | linjiangxiong.com | 8080 | /zh-cn/dotnet/api/system.string.split | view=net-6.0 | net-6.0 | remarks |
编码相关函数
url_encode(value) → varchar
对 value
进行编码,以使其可以安全地包含在 URL 查询参数名称和值中:
- 字母、数字字符不会被编码;
.
、-
、*
、和_
这些字符不会被编码;- ASCII 空格字符被编码为
+
; - 所有其他字符都转换为 UTF-8,并将字节编码为字符串
%XX
,其中XX
是 UTF-8 字节的大写十六进制值。
示例
1 | select url_encode('a_1*B-C.D LEFT语言') |
url_decode(value) → varchar
对 URL 编码的 value
进行解码。该函数是 url_encode()
函数的逆过程。
示例
1 | select url_decode('a_1*B-C.D+LEFT%E8%AF%AD%E8%A8%80') |
(END)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.