Обзор
Обычно варианты функций без RFC можно использовать при работе с общедоступными зарегистрированными доменами, которые не содержат ни пользовательской информации, ни символов @.
В таблице ниже показано, какие символы в URL могут (✔) или не могут (✗) быть разобраны соответствующими вариантами RFC и без RFC:
| Symbol | non-RFC |
RFC |
|
|---|---|---|---|
| ' ' | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| ✗ | ✗ | ||
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* |
Символы, помеченные *, являются подразделителями в RFC 3986 и допустимы в пользовательской информации после символа @.
Существует два типа URL-функций:
- Функции, которые извлекают части URL. Если соответствующая часть в URL отсутствует, возвращается пустая строка.
- Функции, которые удаляют часть URL. Если в URL нет ничего подобного, он остается без изменений.
URLHierarchy
Добавленный в: v1.1.0
Возвращает массив, содержащий URL, усечённый справа по символам /, ? и # в пути и строке запроса. Последовательные символы-разделители считаются одним. Результат включает протокол и хост в качестве первого элемента, а затем всё более длинные пути, образующие иерархию.
Синтаксис
URLHierarchy(url)Аргументы
url— URL-адрес для обработки.String
Возвращаемое значение
Возвращает массив URL-адресов, постепенно увеличивающихся по длине и образующих иерархию. Array(String)
Примеры
Базовое использование
SELECT URLHierarchy('https://example.com/a/b?c=1')['https://example.com/','https://example.com/a/','https://example.com/a/b?','https://example.com/a/b?c=1']URLPathHierarchy
Добавленный в: v1.1.0
Возвращает массив, содержащий компонент путь URL, обрезанный в конце по символам /, ? и #. В отличие от URLHierarchy, результат не включает протокол и хост — он начинается с путь. Идущие подряд символы-разделители считаются одним.
Синтаксис
URLPathHierarchy(url)Аргументы
url— URL-адрес для обработки.String
Возвращаемое значение
Возвращает массив всё более длинных компонентов пути URL-адреса, образующих иерархию. Array(String)
Примеры
Базовое использование
SELECT URLPathHierarchy('https://example.com/a/b?c=1')['/a/','/a/b?','/a/b?c=1']cutFragment
Добавленный в: v1.1.0
Удаляет идентификатор фрагмента из URL, включая символ #.
Синтаксис
cutFragment(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает URL без идентификатора фрагмента. String
Примеры
Пример использования
SELECT cutFragment('http://example.com/path?query=value#fragment123');┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value │
└────────────────────────────────────────────────────────────────┘cutQueryString
Добавленный в: v1.1.0
Удаляет из URL строку запроса, включая вопросительный знак.
Синтаксис
cutQueryString(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает URL без строки запроса. String
Примеры
Пример использования
SELECT cutQueryString('http://example.com/path?query=value¶m=123#fragment');┌─cutQueryString('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path#fragment │
└──────────────────────────────────────────────────────────────────────────┘cutQueryStringAndFragment
Добавленный в: v1.1.0
Удаляет из URL строку запроса и идентификатор фрагмента, включая символы ? и #.
Синтаксис
cutQueryStringAndFragment(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает URL без строки запроса и идентификатора фрагмента. String
Примеры
Пример использования
SELECT cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment');┌─cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path │
└─────────────────────────────────────────────────────────────────────────────────────┘cutToFirstSignificantSubdomain
Добавленный в: v1.1.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена.
Синтаксис
cutToFirstSignificantSubdomain(url)Аргументы
url— URL или строка домена для обработки.String
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена, если это возможно; в противном случае возвращает пустую строку. String
Примеры
Пример использования
SELECT
cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/'),
cutToFirstSignificantSubdomain('www.tr'),
cutToFirstSignificantSubdomain('tr');┌─cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomain('www.tr')─┬─cutToFirstSignificantSubdomain('tr')─┐
│ clickhouse.com.tr │ tr │ │
└───────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────┘cutToFirstSignificantSubdomainCustom
Добавленный в: v21.1.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена включительно. Принимает имя пользовательского списка TLD. Эта функция может быть полезна, если вам нужен актуальный список TLD или у вас есть собственный список.
Пример конфигурации
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- ПРИМЕЧАНИЕ: путь указывается относительно top_level_domains_path -->
</top_level_domains_lists>Синтаксис
cutToFirstSignificantSubdomainCustom(url, tld_list_name)Аргументы
url— URL или строка домена, которую нужно обработать.Stringtld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.const String
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена. String
Примеры
Использование пользовательского списка TLD для нестандартных доменов
SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')foo.there-is-no-such-domaincutToFirstSignificantSubdomainCustomRFC
Добавленный в: v22.10.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена. Принимает имя пользовательского списка TLD. Эта функция может быть полезна, если вам нужен актуальный список TLD или если у вас есть собственный список. Похожа на cutToFirstSignificantSubdomainCustom, но соответствует RFC 3986.
Пример конфигурации
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>Синтаксис
cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)Аргументы
url— URL или строка домена для обработки в соответствии с RFC 3986. -tld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена. String
Примеры
Пример использования
SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─┐
│ foo │
└──────────────────────────────────────────────────────────────────────────┘cutToFirstSignificantSubdomainCustomWithWWW
Добавленный в: v21.1.0
Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена, не удаляя 'www'. Принимает имя пользовательского списка TLD. Это может быть полезно, если вам нужен обновлённый список TLD или если у вас есть собственный список.
Пример конфигурации
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTE: путь указывается относительно top_level_domains_path -->
</top_level_domains_lists>
**Syntax**
```sql
cutToFirstSignificantSubdomainCustomWithWWW(url, tld_list_name)Аргументы
url— URL или строка домена для обработки. -tld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.
Возвращаемое значение
Часть домена, включающая поддомены верхнего уровня вплоть до первого значимого поддомена, без удаления 'www'. String
Примеры
Пример использования
SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');┌─cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list')─┐
│ www.foo │
└──────────────────────────────────────────────────────────────────────────────┘cutToFirstSignificantSubdomainCustomWithWWWRFC
Добавленный в: v22.10.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена, не удаляя www.
Принимает имя пользовательского списка TLD.
Может быть полезно, если вам нужен актуальный список TLD или у вас есть собственный список.
Похоже на cutToFirstSignificantSubdomainCustomWithWWW, но соответствует RFC 3986.
Пример конфигурации
{/* <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> */}
<top_level_domains_lists>
{/* https://publicsuffix.org/list/public_suffix_list.dat */}
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
{/* NOTE: path is under top_level_domains_path */}
</top_level_domains_lists>
**Syntax**
```sql
cutToFirstSignificantSubdomainCustomWithWWWRFC(url, tld_list_name)Аргументы
url— URL или строка домена, которые нужно обработать в соответствии с RFC 3986. -tld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена, без удаления www. String
Примеры
Разбор по RFC 3986 с сохранением www и пользовательским списком TLD
SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')example.customcutToFirstSignificantSubdomainRFC
Добавленный в: v22.10.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до "первого значимого поддомена". Аналогична cutToFirstSignificantSubdomain, но соответствует RFC 3986.
Синтаксис
cutToFirstSignificantSubdomainRFC(url)Аргументы
url— URL или строка домена для обработки в соответствии с RFC 3986.String
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена включительно, если это возможно; в противном случае возвращает пустую строку. String
Примеры
Пример использования
SELECT
cutToFirstSignificantSubdomain('http://user:password@example.com:8080'),
cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080');┌─cutToFirstSignificantSubdomain('http://user:password@example.com:8080')─┬─cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080')─┐
│ │ example.com │
└─────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────┘cutToFirstSignificantSubdomainWithWWW
Добавленный в: v20.12.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до "первого значимого поддомена", не удаляя 'www.'.
Аналогично cutToFirstSignificantSubdomain, но сохраняет префикс 'www.', если он есть.
Синтаксис
cutToFirstSignificantSubdomainWithWWW(url)Аргументы
url— URL или строка домена для обработки.String
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена (вместе с www), если это возможно; в противном случае возвращает пустую строку. String
Примеры
Пример использования
SELECT
cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/'),
cutToFirstSignificantSubdomainWithWWW('www.tr'),
cutToFirstSignificantSubdomainWithWWW('tr');┌─cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomainWithWWW('www.tr')─┬─cutToFirstSignificantSubdomainWithWWW('tr')─┐
│ clickhouse.com.tr │ www.tr │ │
└──────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────┴─────────────────────────────────────────────┘cutToFirstSignificantSubdomainWithWWWRFC
Добавленный в: v22.10.0
Возвращает часть домена, включающую поддомены верхнего уровня вплоть до "первого значимого поддомена", не удаляя 'www'. Аналогично cutToFirstSignificantSubdomainWithWWW, но соответствует RFC 3986.
Синтаксис
cutToFirstSignificantSubdomainWithWWWRFC(url)Аргументы
url— URL или строка домена для обработки в соответствии с RFC 3986.
Возвращаемое значение
Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена (с 'www'), если это возможно; в противном случае возвращает пустую строку String
Примеры
Пример использования
SELECT
cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy'),
cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy');┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┐
│ │ mail.ru │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘cutURLParameter
Добавленный в: v1.1.0
Удаляет из URL первое вхождение name=value для каждого запрошенного параметра.
Сопоставляются только параметры, записанные в виде name=, поэтому параметр-флаг без значения остаётся неизменным; например, cutURLParameter('http://bigmir.net/?a&c=d', 'a') возвращает URL без изменений.
Эта функция не кодирует и не декодирует символы в именах параметров; например, Client ID и Client%20ID считаются разными именами параметров.
Синтаксис
cutURLParameter(url, name)Аргументы
url— URL.Stringname— имя параметра URL.StringилиArray(String)
Возвращаемое значение
URL, из которого удалено первое вхождение name=value для каждого запрошенного параметра. String
Примеры
Пример использования
SELECT
cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', 'a') AS url_without_a,
cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', ['c', 'e']) AS url_without_c_and_e;┌─url_without_a────────────────┬─url_without_c_and_e───────┐
│ http://bigmir.net/?c=d&e=f#g │ http://bigmir.net/?a=b&#g │
└──────────────────────────────┴───────────────────────────┘cutWWW
Добавленный в: v1.1.0
Удаляет начальный www. из домена URL, если он есть.
Синтаксис
cutWWW(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает URL без начального www. в домене. String
Примеры
Пример использования
SELECT cutWWW('http://www.example.com/path?query=value#fragment');┌─cutWWW('http://www.example.com/path?query=value#fragment')─┐
│ http://example.com/path?query=value#fragment │
└────────────────────────────────────────────────────────────┘decodeURLComponent
Добавленный в: v1.1.0
Принимает строку в URL-кодировке и декодирует её, возвращая в исходный, читаемый вид.
Синтаксис
decodeURLComponent(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает декодированный URL-адрес. String
Примеры
Пример использования
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘decodeURLFormComponent
Добавленный в: v1.1.0
Декодирует URL-кодированные строки по правилам кодирования данных форм (RFC-1866): знаки + преобразуются в пробелы, а символы в процентной кодировке декодируются.
Синтаксис
decodeURLFormComponent(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает декодированный URL-адрес. String
Примеры
Пример использования
SELECT decodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT%201+2%2B3') AS DecodedURL;┌─DecodedURL────────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1 2+3 │
└───────────────────────────────────────────┘domain
Добавленный в: v1.1.0
Извлекает имя хоста из URL.
URL можно указать как с протоколом, так и без него.
Синтаксис
domain(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает имя хоста, если входную строку можно интерпретировать как URL, в противном случае — пустую строку. String
Примеры
Пример использования
SELECT domain('svn+ssh://some.svn-hosting.com:80/repo/trunk');┌─domain('svn+ssh://some.svn-hosting.com:80/repo/trunk')─┐
│ some.svn-hosting.com │
└────────────────────────────────────────────────────────┘domainRFC
Добавленный в: v22.10.0
Извлекает имя хоста из URL.
Аналогично domain, но соответствует RFC 3986.
Синтаксис
domainRFC(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает имя хоста, если входную строку можно разобрать как URL; в противном случае возвращает пустую строку. String
Примеры
Пример использования
SELECT
domain('http://user:password@example.com:8080/path?query=value#fragment'),
domainRFC('http://user:password@example.com:8080/path?query=value#fragment');┌─domain('http://user:password@example.com:8080/path?query=value#fragment')─┬─domainRFC('http://user:password@example.com:8080/path?query=value#fragment')─┐
│ │ example.com │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘domainWithoutWWW
Добавленный в: v1.1.0
Возвращает домен URL без начального www., если оно присутствует.
Синтаксис
domainWithoutWWW(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает доменное имя, если входную строку можно разобрать как URL (без префикса www.), в противном случае — пустую строку. String
Примеры
Пример использования
SELECT domainWithoutWWW('http://paul@www.example.com:80/');┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘domainWithoutWWWRFC
Добавленный в: v1.1.0
Возвращает домен без ведущего www., если он есть. Аналогична domainWithoutWWW, но соответствует RFC 3986.
Синтаксис
domainWithoutWWWRFC(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает доменное имя, если входную строку можно разобрать как URL (без префикса www.), в противном случае — пустую строку. String
Примеры
Пример использования
SELECT
domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment'),
domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment');┌─domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment')─┬─domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment')─┐
│ │ example.com │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘encodeURLComponent
Добавленный в: v22.3.0
Принимает обычную строку и преобразует её в URL-кодированный формат (percent-encoding), в котором специальные символы заменяются их эквивалентами в процентной кодировке.
Синтаксис
encodeURLComponent(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает URL в закодированном виде. String
Примеры
Пример использования
SELECT encodeURLComponent('http://127.0.0.1:8123/?query=SELECT 1;') AS EncodedURL;┌─EncodedURL───────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT%201%3B │
└──────────────────────────────────────────────────────────┘encodeURLFormComponent
Добавленный в: v22.3.0
Кодирует строки по правилам кодирования форм (RFC-1866): пробелы заменяются на знак +, а специальные символы подвергаются процентному кодированию.
Синтаксис
encodeURLFormComponent(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает URL в закодированном виде. String
Примеры
Пример использования
SELECT encodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT 1 2+3') AS EncodedURL;┌─EncodedURL────────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT+1+2%2B3 │
└───────────────────────────────────────────────────────────┘extractURLParameter
Добавленный в: v1.1.0
Возвращает значение параметра name в URL, если он присутствует; в противном случае возвращает пустую строку.
Если параметров с таким именем несколько, возвращается первое вхождение.
Функция предполагает, что параметр в аргументе url закодирован так же, как и в аргументе name.
Синтаксис
extractURLParameter(url, name)Аргументы
Возвращаемое значение
Возвращает значение параметра URL с заданным именем. String
Примеры
Пример использования
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');┌─extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1')─┐
│ value1 │
└──────────────────────────────────────────────────────────────────────────────────┘extractURLParameterNames
Добавленный в: v1.1.0
Возвращает массив строк с именами URL-параметров. Значения не декодируются.
Синтаксис
extractURLParameterNames(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает массив строк с именами параметров URL. Array(String)
Примеры
Пример использования
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');┌─extractURLParameterNames('http://example.com/?param1=value1¶m2=value2')─┐
│ ['param1','param2'] │
└─────────────────────────────────────────────────────────────────────────────┘extractURLParameters
Добавленный в: v1.1.0
Возвращает массив строк name=value с параметрами URL.
Значения не декодируются.
Синтаксис
extractURLParameters(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает массив строк вида name=value, соответствующих параметрам URL. Array(String)
Примеры
Пример использования
SELECT extractURLParameters('http://example.com/?param1=value1¶m2=value2');┌─extractURLParameters('http://example.com/?param1=value1¶m2=value2')─┐
│ ['param1=value1','param2=value2'] │
└─────────────────────────────────────────────────────────────────────────┘firstSignificantSubdomain
Добавленный в: v1.1.0
Возвращает "первый значимый поддомен".
Первым значимым поддоменом считается домен второго уровня, если это 'com', 'net', 'org' или 'co'. В противном случае это домен третьего уровня.
Например, firstSignificantSubdomain('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'.
Список "незначимых" доменов второго уровня и другие подробности реализации в будущем могут измениться.
Синтаксис
firstSignificantSubdomain(url)Аргументы
- Отсутствуют.
Возвращаемое значение
Примеры
firstSignificantSubdomain
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')┌─firstSignificantSubdomain('https://news.clickhouse.com/')─┐
│ clickhouse │
└───────────────────────────────────────────────────────────┘firstSignificantSubdomainCustom
Добавленный в: v21.1.0
Возвращает первый значимый поддомен URL с использованием пользовательского списка TLD (доменов верхнего уровня). Имя пользовательского списка TLD указывает на конфигурацию, определяющую, какие суффиксы доменов следует считать доменами верхнего уровня. Это полезно для нестандартных иерархий TLD. Функция использует упрощённый алгоритм разбора URL, предполагающий, что протокол и всё, что следует за ним, уже удалены.
Синтаксис
firstSignificantSubdomainCustom(url, tld_list_name)Аргументы
url— URL-адрес, из которого нужно извлечь поддомен.Stringtld_list_name— Имя пользовательского списка TLD из конфигурации.String
Возвращаемое значение
Возвращает первый значимый поддомен. String
Примеры
Базовое использование
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')examplefirstSignificantSubdomainCustomRFC
Добавленный в: v22.10.0
Аналогична firstSignificantSubdomainCustom, но использует разбор URL в соответствии с RFC 3986 вместо упрощённого алгоритма.
Синтаксис
firstSignificantSubdomainCustomRFC(url, tld_list_name)Аргументы
url— URL-адрес, из которого нужно извлечь поддомен.Stringtld_list_name— имя пользовательского списка TLD из конфигурации.String
Возвращаемое значение
Возвращает первый значимый поддомен. String
Примеры
Базовое использование
SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')examplefirstSignificantSubdomainRFC
Добавленный в: v22.10.0
Возвращает "первый значимый поддомен" согласно RFC 1034.
Синтаксис
firstSignificantSubdomainRFC(url)Аргументы
- Отсутствуют.
Возвращаемое значение
Примеры
fragment
Добавленный в: v1.1.0
Возвращает идентификатор фрагмента без начального символа #.
Синтаксис
fragment(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает идентификатор фрагмента без начального символа #. String
Примеры
Пример использования
SELECT fragment('https://clickhouse.com/docs/get-started/setup/cloud#1-create-a-clickhouse-service');┌─fragment('https://clickhouse.com/docs/get-started/setup/cloud#1-create-a-clickhouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────────────────────────────────────────────────────────────────────┘netloc
Добавленный в: v20.5.0
Извлекает сетевой адрес (username:password@host:port) из URL.
Синтаксис
netloc(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает username:password@host:port из указанного URL. String
Примеры
Пример использования
SELECT netloc('http://paul@www.example.com:80/');┌─netloc('http://paul@www.example.com:80/')─┐
│ paul@www.example.com:80 │
└───────────────────────────────────────────┘path
Добавленный в: v1.1.0
Возвращает путь URL без строки запроса.
Синтаксис
path(url)Аргументы
url— URL-адрес.String
Возвращаемое значение
Возвращает путь URL-адреса без строки запроса. String
Примеры
Пример использования
SELECT path('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value');┌─path('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value')─┐
│ /docs/reference/functions/regular-functions/url-functions │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘pathFull
Добавленный в: v1.1.0
То же, что и path, но включает строку запроса и фрагмент URL-адреса.
Синтаксис
pathFull(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает путь URL-адреса, включая строку запроса и фрагмент. String
Примеры
Пример использования
SELECT pathFull('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value#section');┌─pathFull('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value#section')─┐
│ /docs/reference/functions/regular-functions/url-functions?query=value#section │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘port
Добавленный в: v20.5.0
Возвращает порт URL или default_port, если URL не содержит порт или его не удалось разобрать.
Синтаксис
port(url[, default_port])Аргументы
url— URL.Stringdefault_port— Необязательный параметр. Номер порта, возвращаемый по умолчанию. По умолчанию0.UInt16
Возвращаемое значение
Возвращает порт URL или порт по умолчанию, если в URL порт не указан или при ошибке валидации. UInt16
Примеры
Пример использования
SELECT port('https://clickhouse.com:8443/docs'), port('https://clickhouse.com/docs', 443);┌─port('https://clickhouse.com:8443/docs')─┬─port('https://clickhouse.com/docs', 443)─┐
│ 8443 │ 443 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘portRFC
Добавленный в: v22.10.0
Возвращает порт или default_port, если URL не содержит порта или его не удаётся разобрать.
Аналогично port, но соответствует RFC 3986.
Синтаксис
portRFC(url[, default_port])Аргументы
url— URL.Stringdefault_port— Необязательный параметр. Номер порта, возвращаемый по умолчанию. По умолчанию0.UInt16
Возвращаемое значение
Возвращает порт или порт по умолчанию, если URL не содержит порта или возникает ошибка валидации. UInt16
Примеры
Пример использования
SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');┌─port('http://user:password@example.com:8080/')─┬─portRFC('http://user:password@example.com:8080/')─┐
│ 0 │ 8080 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘протокол
Добавленный в: v1.1.0
Извлекает протокол из URL.
Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet.
Синтаксис
protocol(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает протокол URL или пустую строку, если определить его не удалось. String
Примеры
Пример использования
SELECT protocol('https://clickhouse.com/');┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘queryString
Добавленный в: v1.1.0
Возвращает строку запроса URL без начального знака вопроса, символа # и всего, что следует после #.
Синтаксис
queryString(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает строку запроса URL без начального знака вопроса и фрагмента. String
Примеры
Пример использования
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');┌─queryString('https://clickhouse.com/docs?query=value¶m=123#section')─┐
│ query=value¶m=123 │
└──────────────────────────────────────────────────────────────────────────┘queryStringAndFragment
Добавленный в: v1.1.0
Возвращает строку запроса и идентификатор фрагмента URL.
Синтаксис
queryStringAndFragment(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает строку запроса и идентификатор фрагмента URL. String
Примеры
Пример использования
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');┌─queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section')─┐
│ query=value¶m=123#section │
└─────────────────────────────────────────────────────────────────────────────────────┘topLevelDomain
Добавленный в: v1.1.0
Извлекает домен верхнего уровня из URL.
Синтаксис
topLevelDomain(url)Аргументы
url— URL.String
Возвращаемое значение
Возвращает доменное имя, если входную строку можно разобрать как URL. В противном случае возвращает пустую строку. String
Примеры
Пример использования
SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com │
└────────────────────────────────────────────────────────────────────┘topLevelDomainRFC
Добавленный в: v22.10.0
Извлекает из URL домен верхнего уровня.
Аналогична topLevelDomain, но соответствует RFC 3986.
Синтаксис
topLevelDomainRFC(url)Аргументы
url— URL.String
Возвращаемое значение
Доменное имя, если входную строку можно разобрать как URL. В противном случае — пустая строка. String
Примеры
Пример использования
SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│ │ com │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘