ClickHouse/docs/zh/query_language/functions/url_functions.md
2019-06-05 16:54:36 +08:00

124 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# URL函数
所有这些功能都不遵循RFC。它们被最大程度简化以提高性能。
## URL截取函数
如果URL中没有要截取的内容则返回空字符串。
### protocol
返回URL的协议。例如 http、ftp、mailto、magnet...
### domain
获取域名。
### domainWithoutWWW
返回域名并删除第一个www.’。
### topLevelDomain
返回顶级域名。例如:.ru。
### firstSignificantSubdomain
返回“第一个有效子域名”。这并不是一个标准概念仅用于Yandex.Metrica。如果顶级域名为comnetorg或者co则第一个有效子域名为二级域名。否则则返回三级域名。例如irstSignificantSubdomain ('<https://news.yandex.ru/>') = 'yandex ' firstSignificantSubdomain ('<https://news.yandex.com.tr/>') = 'yandex '。一些实现细节在未来可能会进行改变。
### cutToFirstSignificantSubdomain
返回包含顶级域名与第一个有效子域名之间的内容(请参阅上面的内容)。
例如, `cutToFirstSignificantSubdomain('https://news.yandex.com.tr/') = 'yandex.com.tr'`.
### path
返回URL路径。例如`/top/news.html`,不包含请求参数。
### pathFull
与上面相同但包括请求参数和fragment。例如/top/news.html?page=2\#comments
### queryString
返回请求参数。例如page=1&lr=213。请求参数不包含问号已经\# 以及\# 之后所有的内容。
### fragment
返回URL的fragment标识。fragment不包含\#。
### queryStringAndFragment
返回请求参数和fragment标识。例如page=1\#29390。
### extractURLParameter(URL, name)
返回URL请求参数中名称为name的参数。如果不存在则返回一个空字符串。如果存在多个匹配项则返回第一个相匹配的。此函数假设参数名称与参数值在url中的编码方式相同。
### extractURLParameters(URL)
返回一个数组其中以name=value的字符串形式返回url的所有请求参数。不以任何编码解析任何内容。
### extractURLParameterNames(URL)
返回一个数组其中包含url的所有请求参数的名称。不以任何编码解析任何内容。
### URLHierarchy(URL)
返回一个数组,其中包含以/切割的URL的所有内容。将被包含在URL路径以及请求参数中。连续的分割符号被记为一个。
### URLPathHierarchy(URL)
与上面相同但结果不包含协议和host部分。 /element(root)不包括在内。该函数用于在Yandex.Metric中实现导出URL的树形结构。
```
URLPathHierarchy('https://example.com/browse/CONV-6788') =
[
'/browse/',
'/browse/CONV-6788'
]
```
### decodeURLComponent(URL)
返回已经解码的URL。
例如:
``` sql
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
```
```
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘
```
## 删除URL中的部分内容
如果URL中不包含指定的部分则URL不变。
### cutWWW
删除开始的第一个'www.'。
### cutQueryString
删除请求参数。问号也将被删除。
### cutFragment
删除fragment标识。\#同样也会被删除。
### cutQueryStringAndFragment
删除请求参数以及fragment标识。问号以及\#也会被删除。
### cutURLParameter(URL, name)
删除URL中名称为name的参数。改函数假设参数名称以及参数值经过URL相同的编码。
[来源文章](https://clickhouse.yandex/docs/en/query_language/functions/url_functions/) <!--hide-->