2020-03-20 18:20:59 +00:00
|
|
|
|
# URL函数 {#urlhan-shu}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
所有这些功能都不遵循RFC。它们被最大程度简化以提高性能。
|
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
## URL截取函数 {#urljie-qu-han-shu}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
如果URL中没有要截取的内容则返回空字符串。
|
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### 协议 {#protocol}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
返回URL的协议。例如: http、ftp、mailto、magnet…
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### 域 {#domain}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
获取域名。
|
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### domainwithoutww {#domainwithoutwww}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-30 18:19:18 +00:00
|
|
|
|
返回域名并删除第一个’www.’。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### topLevelDomain {#topleveldomain}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回顶级域名。例如:.ru。
|
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### 第一重要的元素分区域 {#firstsignificantsubdomain}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-30 18:19:18 +00:00
|
|
|
|
返回«第一个有效子域名»。这并不是一个标准概念,仅用于Yandex.Metrica。如果顶级域名为’com’,‘net’,‘org’或者‘co’则第一个有效子域名为二级域名。否则则返回三级域名。例如,irstSignificantSubdomain (’https://news.yandex.ru/‘) = ’yandex’, firstSignificantSubdomain (‘https://news.yandex.com.tr/’) = ‘yandex’。一些实现细节在未来可能会进行改变。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### cutToFirstSignificantSubdomain {#cuttofirstsignificantsubdomain}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回包含顶级域名与第一个有效子域名之间的内容(请参阅上面的内容)。
|
|
|
|
|
|
|
|
|
|
例如, `cutToFirstSignificantSubdomain('https://news.yandex.com.tr/') = 'yandex.com.tr'`.
|
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### 路径 {#path}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回URL路径。例如:`/top/news.html`,不包含请求参数。
|
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### pathFull {#pathfull}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
与上面相同,但包括请求参数和fragment。例如:/top/news.html?page=2#comments
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### 查询字符串 {#querystring}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
返回请求参数。例如:page=1&lr=213。请求参数不包含问号已经# 以及# 之后所有的内容。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### 片段 {#fragment}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
返回URL的fragment标识。fragment不包含#。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### querystring andfragment {#querystringandfragment}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
返回请求参数和fragment标识。例如:page=1#29390。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### extractURLParameter(URL,name) {#extracturlparameterurl-name}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-30 18:19:18 +00:00
|
|
|
|
返回URL请求参数中名称为’name’的参数。如果不存在则返回一个空字符串。如果存在多个匹配项则返回第一个相匹配的。此函数假设参数名称与参数值在url中的编码方式相同。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### extractURLParameters(URL) {#extracturlparametersurl}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回一个数组,其中以name=value的字符串形式返回url的所有请求参数。不以任何编码解析任何内容。
|
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### extractURLParameterNames(URL) {#extracturlparameternamesurl}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回一个数组,其中包含url的所有请求参数的名称。不以任何编码解析任何内容。
|
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### URLHierarchy(URL) {#urlhierarchyurl}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回一个数组,其中包含以/切割的URL的所有内容。?将被包含在URL路径以及请求参数中。连续的分割符号被记为一个。
|
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### Urlpathhierarchy(URL) {#urlpathhierarchyurl}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
与上面相同,但结果不包含协议和host部分。 /element(root)不包括在内。该函数用于在Yandex.Metric中实现导出URL的树形结构。
|
|
|
|
|
|
2020-03-21 04:11:51 +00:00
|
|
|
|
URLPathHierarchy('https://example.com/browse/CONV-6788') =
|
|
|
|
|
[
|
|
|
|
|
'/browse/',
|
|
|
|
|
'/browse/CONV-6788'
|
|
|
|
|
]
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### decodeURLComponent(URL) {#decodeurlcomponenturl}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
返回已经解码的URL。
|
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
``` sql
|
|
|
|
|
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
|
|
|
|
|
```
|
|
|
|
|
|
2020-03-21 04:11:51 +00:00
|
|
|
|
┌─DecodedURL─────────────────────────────┐
|
|
|
|
|
│ http://127.0.0.1:8123/?query=SELECT 1; │
|
|
|
|
|
└────────────────────────────────────────┘
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
## 删除URL中的部分内容 {#shan-chu-urlzhong-de-bu-fen-nei-rong}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
如果URL中不包含指定的部分,则URL不变。
|
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### cutWWW {#cutwww}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-30 18:19:18 +00:00
|
|
|
|
删除开始的第一个’www.’。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### cutQueryString {#cutquerystring}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
删除请求参数。问号也将被删除。
|
|
|
|
|
|
2020-03-20 18:20:59 +00:00
|
|
|
|
### cutFragment {#cutfragment}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
删除fragment标识。#同样也会被删除。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### cutquerystring andfragment {#cutquerystringandfragment}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
删除请求参数以及fragment标识。问号以及#也会被删除。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
### cutURLParameter(URL,name) {#cuturlparameterurl-name}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-30 18:19:18 +00:00
|
|
|
|
删除URL中名称为’name’的参数。改函数假设参数名称以及参数值经过URL相同的编码。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2021-09-19 20:05:54 +00:00
|
|
|
|
[来源文章](https://clickhouse.com/docs/en/query_language/functions/url_functions/) <!--hide-->
|