Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Функции для работы с URL-адресами

Обзор

Обычно варианты функций без 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 без идентификатора фрагмента. 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 без строки запроса. String

Примеры

Пример использования

SELECT cutQueryString('http://example.com/path?query=value&param=123#fragment');
┌─cutQueryString('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path#fragment                                         │
└──────────────────────────────────────────────────────────────────────────┘

cutQueryStringAndFragment

Добавленный в: v1.1.0

Удаляет из URL строку запроса и идентификатор фрагмента, включая символы ? и #.

Синтаксис

cutQueryStringAndFragment(url)

Аргументы

Возвращаемое значение

Возвращает URL без строки запроса и идентификатора фрагмента. String

Примеры

Пример использования

SELECT cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment');
┌─cutQueryStringAndFragment('http://example.com/path?query=value&param=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 или строка домена, которую нужно обработать. String
  • tld_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-domain

cutToFirstSignificantSubdomainCustomRFC

Добавленный в: 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.custom

cutToFirstSignificantSubdomainRFC

Добавленный в: 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, из которого удалено первое вхождение 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 без начального 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-адрес. 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-адрес. 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, в противном случае — пустую строку. 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; в противном случае возвращает пустую строку. 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 (без префикса 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 (без префикса 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 в закодированном виде. 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 в закодированном виде. 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 — URL. String
  • name — Имя параметра. String

Возвращаемое значение

Возвращает значение параметра URL с заданным именем. String

Примеры

Пример использования

SELECT extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1');
┌─extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1')─┐
│ value1                                                                           │
└──────────────────────────────────────────────────────────────────────────────────┘

extractURLParameterNames

Добавленный в: v1.1.0

Возвращает массив строк с именами URL-параметров. Значения не декодируются.

Синтаксис

extractURLParameterNames(url)

Аргументы

Возвращаемое значение

Возвращает массив строк с именами параметров URL. Array(String)

Примеры

Пример использования

SELECT extractURLParameterNames('http://example.com/?param1=value1&param2=value2');
┌─extractURLParameterNames('http://example.com/?param1=value1&param2=value2')─┐
│ ['param1','param2']                                                         │
└─────────────────────────────────────────────────────────────────────────────┘

extractURLParameters

Добавленный в: v1.1.0

Возвращает массив строк name=value с параметрами URL. Значения не декодируются.

Синтаксис

extractURLParameters(url)

Аргументы

Возвращаемое значение

Возвращает массив строк вида name=value, соответствующих параметрам URL. Array(String)

Примеры

Пример использования

SELECT extractURLParameters('http://example.com/?param1=value1&param2=value2');
┌─extractURLParameters('http://example.com/?param1=value1&param2=value2')─┐
│ ['param1=value1','param2=value2']                                       │
└─────────────────────────────────────────────────────────────────────────┘

firstSignificantSubdomain

Добавленный в: v1.1.0

Возвращает "первый значимый поддомен".

Первым значимым поддоменом считается домен второго уровня, если это 'com', 'net', 'org' или 'co'. В противном случае это домен третьего уровня.

Например, firstSignificantSubdomain('https://news.clickhouse.com/&#39;) = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/&#39;) = '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-адрес, из которого нужно извлечь поддомен. String
  • tld_list_name — Имя пользовательского списка TLD из конфигурации. String

Возвращаемое значение

Возвращает первый значимый поддомен. String

Примеры

Базовое использование

SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
example

firstSignificantSubdomainCustomRFC

Добавленный в: v22.10.0

Аналогична firstSignificantSubdomainCustom, но использует разбор URL в соответствии с RFC 3986 вместо упрощённого алгоритма.

Синтаксис

firstSignificantSubdomainCustomRFC(url, tld_list_name)

Аргументы

  • url — URL-адрес, из которого нужно извлечь поддомен. String
  • tld_list_name — имя пользовательского списка TLD из конфигурации. String

Возвращаемое значение

Возвращает первый значимый поддомен. String

Примеры

Базовое использование

SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
example

firstSignificantSubdomainRFC

Добавленный в: v22.10.0

Возвращает "первый значимый поддомен" согласно RFC 1034.

Синтаксис

firstSignificantSubdomainRFC(url)

Аргументы

  • Отсутствуют.

Возвращаемое значение

Примеры

fragment

Добавленный в: v1.1.0

Возвращает идентификатор фрагмента без начального символа #.

Синтаксис

fragment(url)

Аргументы

Возвращаемое значение

Возвращает идентификатор фрагмента без начального символа #. 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)

Аргументы

Возвращаемое значение

Возвращает 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-адреса, включая строку запроса и фрагмент. 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. String
  • default_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. String
  • default_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 или пустую строку, если определить его не удалось. String

Примеры

Пример использования

SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https                               │
└─────────────────────────────────────┘

queryString

Добавленный в: v1.1.0

Возвращает строку запроса URL без начального знака вопроса, символа # и всего, что следует после #.

Синтаксис

queryString(url)

Аргументы

Возвращаемое значение

Возвращает строку запроса URL без начального знака вопроса и фрагмента. String

Примеры

Пример использования

SELECT queryString('https://clickhouse.com/docs?query=value&param=123#section');
┌─queryString('https://clickhouse.com/docs?query=value&param=123#section')─┐
│ query=value&param=123                                                    │
└──────────────────────────────────────────────────────────────────────────┘

queryStringAndFragment

Добавленный в: v1.1.0

Возвращает строку запроса и идентификатор фрагмента URL.

Синтаксис

queryStringAndFragment(url)

Аргументы

Возвращаемое значение

Возвращает строку запроса и идентификатор фрагмента URL. String

Примеры

Пример использования

SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section');
┌─queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section')─┐
│ query=value&param=123#section                                                       │
└─────────────────────────────────────────────────────────────────────────────────────┘

topLevelDomain

Добавленный в: v1.1.0

Извлекает домен верхнего уровня из URL.

Синтаксис

topLevelDomain(url)

Аргументы

Возвращаемое значение

Возвращает доменное имя, если входную строку можно разобрать как 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. В противном случае — пустая строка. 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                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
Navigation