Перейти к основному содержанию

Обзор

Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и по большей части не соответствуют стандарту RFC-3986. К именам функций, реализующих RFC-3986, добавляется RFC, и обычно они работают медленнее.
Обычно варианты функций без RFC можно использовать при работе с общедоступными зарегистрированными доменами, которые не содержат ни пользовательской информации, ни символов @. В таблице ниже показано, какие символы в URL могут () или не могут () быть разобраны соответствующими вариантами RFC и без RFC:
Symbolnon-RFCRFC
’ ’
\t
<
>
%✔*
{
}
\
^
~✔*
[
]
;✔*
=✔*
&✔*
Символы, помеченные *, являются подразделителями в RFC 3986 и допустимы в пользовательской информации после символа @. Существует два типа URL-функций:
  • Функции, которые извлекают части URL. Если соответствующая часть в URL отсутствует, возвращается пустая строка.
  • Функции, которые удаляют часть URL. Если в URL нет ничего подобного, он остается без изменений.
Приведенные ниже функции сгенерированы из системной таблицы system.functions.

URLHierarchy

Добавленный в: v1.1.0 Возвращает массив, содержащий URL, усечённый справа по символам /, ? и # в пути и строке запроса. Последовательные символы-разделители считаются одним. Результат включает протокол и хост в качестве первого элемента, а затем всё более длинные пути, образующие иерархию. Синтаксис
URLHierarchy(url)
Аргументы
  • url — URL-адрес для обработки. String
Возвращаемое значение Возвращает массив URL-адресов, постепенно увеличивающихся по длине и образующих иерархию. Array(String) Примеры Базовое использование
Query
SELECT URLHierarchy('https://example.com/a/b?c=1')
Response
['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) Примеры Базовое использование
Query
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
Response
['/a/','/a/b','/a/b?c=1']

cutFragment

Добавленный в: v1.1.0 Удаляет идентификатор фрагмента из URL, включая символ #. Синтаксис
cutFragment(url)
Аргументы Возвращаемое значение Возвращает URL без идентификатора фрагмента. String Примеры Пример использования
Query
SELECT cutFragment('http://example.com/path?query=value#fragment123');
Response
┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value                            │
└────────────────────────────────────────────────────────────────┘

cutQueryString

Добавленный в: v1.1.0 Удаляет из URL строку запроса, включая вопросительный знак. Синтаксис
cutQueryString(url)
Аргументы Возвращаемое значение Возвращает URL без строки запроса. String Примеры Пример использования
Query
SELECT cutQueryString('http://example.com/path?query=value&param=123#fragment');
Response
┌─cutQueryString('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path#fragment                                         │
└──────────────────────────────────────────────────────────────────────────┘

cutQueryStringAndFragment

Добавленный в: v1.1.0 Удаляет из URL строку запроса и идентификатор фрагмента, включая символы ? и #. Синтаксис
cutQueryStringAndFragment(url)
Аргументы Возвращаемое значение Возвращает URL без строки запроса и идентификатора фрагмента. String Примеры Пример использования
Query
SELECT cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment');
Response
┌─cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path                                                             │
└─────────────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomain

Добавленный в: v1.1.0 Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена. Синтаксис
cutToFirstSignificantSubdomain(url)
Аргументы
  • url — URL или строка домена для обработки. String
Возвращаемое значение Возвращает часть домена, включающую поддомены верхнего уровня вплоть до первого значимого поддомена, если это возможно; в противном случае возвращает пустую строку. String Примеры Пример использования
Query
SELECT
    cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/'),
    cutToFirstSignificantSubdomain('www.tr'),
    cutToFirstSignificantSubdomain('tr');
Response
┌─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 для нестандартных доменов
Query
SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')
Response
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>
    <!-- ПРИМЕЧАНИЕ: путь указывается относительно top_level_domains_path -->
</top_level_domains_lists>
Синтаксис
cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)
Аргументы
  • url — URL или доменное имя для обработки в соответствии с RFC 3986. - tld_list_name — имя пользовательского списка TLD, настроенного в ClickHouse.
Возвращаемое значение Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена. String Примеры Пример использования
Query
SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');
Response
┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─────┐
│ www.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 Примеры Пример использования
Query
SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');
Response
┌─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>
    {/* ПРИМЕЧАНИЕ: path указывается относительно 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
Query
SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
Response
www.example.custom

cutToFirstSignificantSubdomainRFC

Добавленный в: v22.10.0 Возвращает часть домена, включающую поддомены верхнего уровня вплоть до “первого значимого поддомена”. Аналогична cutToFirstSignificantSubdomain, но соответствует RFC 3986. Синтаксис
cutToFirstSignificantSubdomainRFC(url)
Аргументы
  • url — URL или строка домена для обработки в соответствии с RFC 3986. String
Возвращаемое значение Возвращает часть домена, включающую поддомены верхнего уровня до первого значимого поддомена включительно, если это возможно; в противном случае возвращает пустую строку. String Примеры Пример использования
Query
SELECT
    cutToFirstSignificantSubdomain('http://user:password@example.com:8080'),
    cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080');
Response
┌─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 Примеры Пример использования
Query
SELECT
    cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/'),
    cutToFirstSignificantSubdomainWithWWW('www.tr'),
    cutToFirstSignificantSubdomainWithWWW('tr');
Response
┌─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 Примеры Пример использования
Query
SELECT
    cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy'),
    cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy');
Response
┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┐
│                                                                                       │ mail.ru                                                                                  │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘

cutURLParameter

Добавленный в: v1.1.0 Удаляет параметр name из URL, если такой параметр присутствует. Эта функция не кодирует и не декодирует символы в именах параметров; например, Client ID и Client%20ID считаются разными именами параметров. Синтаксис
cutURLParameter(url, name)
Аргументы Возвращаемое значение URL без параметра name. String Примеры Пример использования
Query
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;
Response
┌─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 Примеры Пример использования
Query
SELECT cutWWW('http://www.example.com/path?query=value#fragment');
Response
┌─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 Примеры Пример использования
Query
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
Response
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘

decodeURLFormComponent

Добавленный в: v1.1.0 Декодирует URL-кодированные строки по правилам кодирования данных форм (RFC-1866): знаки + преобразуются в пробелы, а символы в процентной кодировке декодируются. Синтаксис
decodeURLFormComponent(url)
Аргументы Возвращаемое значение Возвращает декодированный URL-адрес. String Примеры Пример использования
Query
SELECT decodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT%201+2%2B3') AS DecodedURL;
Response
┌─DecodedURL────────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1 2+3 │
└───────────────────────────────────────────┘

domain

Добавленный в: v1.1.0 Извлекает имя хоста из URL. URL можно указать как с протоколом, так и без него. Синтаксис
domain(url)
Аргументы Возвращаемое значение Возвращает имя хоста, если входную строку можно интерпретировать как URL, в противном случае — пустую строку. String Примеры Пример использования
Query
SELECT domain('svn+ssh://some.svn-hosting.com:80/repo/trunk');
Response
┌─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 Примеры Пример использования
Query
SELECT
    domain('http://user:password@example.com:8080/path?query=value#fragment'),
    domainRFC('http://user:password@example.com:8080/path?query=value#fragment');
Response
┌─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 Примеры Пример использования
Query
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
Response
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com                                         │
└─────────────────────────────────────────────────────┘

domainWithoutWWWRFC

Добавленный в: v1.1.0 Возвращает домен без ведущего www., если он есть. Аналогична domainWithoutWWW, но соответствует RFC 3986. Синтаксис
domainWithoutWWWRFC(url)
Аргументы Возвращаемое значение Возвращает доменное имя, если входную строку можно разобрать как URL (без префикса www.), в противном случае — пустую строку. String Примеры Пример использования
Query
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');
Response
┌─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 Примеры Пример использования
Query
SELECT encodeURLComponent('http://127.0.0.1:8123/?query=SELECT 1;') AS EncodedURL;
Response
┌─EncodedURL───────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT%201%3B │
└──────────────────────────────────────────────────────────┘

encodeURLFormComponent

Добавленный в: v22.3.0 Кодирует строки по правилам кодирования форм (RFC-1866): пробелы заменяются на знак +, а специальные символы подвергаются процентному кодированию. Синтаксис
encodeURLFormComponent(url)
Аргументы Возвращаемое значение Возвращает URL в закодированном виде. String Примеры Пример использования
Query
SELECT encodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT 1 2+3') AS EncodedURL;
Response
┌─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 Примеры Пример использования
Query
SELECT extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1');
Response
┌─extractURLPa⋯, 'param1')─┐
│ value1                   │
└──────────────────────────┘

extractURLParameterNames

Добавленный в: v1.1.0 Возвращает массив строк с именами URL-параметров. Значения не декодируются. Синтаксис
extractURLParameterNames(url)
Аргументы Возвращаемое значение Возвращает массив строк с именами параметров URL. Array(String) Примеры Пример использования
Query
SELECT extractURLParameterNames('http://example.com/?param1=value1&param2=value2');
Response
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2']      │
└──────────────────────────┘

extractURLParameters

Добавленный в: v1.1.0 Возвращает массив строк name=value с параметрами URL. Значения не декодируются. Синтаксис
extractURLParameters(url)
Аргументы Возвращаемое значение Возвращает массив строк вида name=value, соответствующих параметрам URL. Array(String) Примеры Пример использования
Query
SELECT extractURLParameters('http://example.com/?param1=value1&param2=value2');
Response
┌─extractURLParame⋯&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
Query
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
Response

firstSignificantSubdomainCustom

Добавленный в: v21.1.0 Возвращает первый значимый поддомен URL с использованием пользовательского списка TLD (доменов верхнего уровня). Имя пользовательского списка TLD указывает на конфигурацию, определяющую, какие суффиксы доменов следует считать доменами верхнего уровня. Это полезно для нестандартных иерархий TLD. Функция использует упрощённый алгоритм разбора URL, предполагающий, что протокол и всё, что следует за ним, уже удалены. Синтаксис
firstSignificantSubdomainCustom(url, tld_list_name)
Аргументы
  • url — URL-адрес, из которого нужно извлечь поддомен. String
  • tld_list_name — Имя пользовательского списка TLD из конфигурации. String
Возвращаемое значение Возвращает первый значимый поддомен. String Примеры Базовое использование
Query
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
Response
example

firstSignificantSubdomainCustomRFC

Добавленный в: v22.10.0 Аналогична firstSignificantSubdomainCustom, но использует разбор URL в соответствии с RFC 3986 вместо упрощённого алгоритма. Синтаксис
firstSignificantSubdomainCustomRFC(url, tld_list_name)
Аргументы
  • url — URL-адрес, из которого нужно извлечь поддомен. String
  • tld_list_name — имя пользовательского списка TLD из конфигурации. String
Возвращаемое значение Возвращает первый значимый поддомен. String Примеры Базовое использование
Query
SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
Response
example

firstSignificantSubdomainRFC

Добавленный в: v22.10.0 Возвращает “первый значимый поддомен” согласно RFC 1034. Синтаксис
firstSignificantSubdomainRFC(url)
Аргументы
  • Отсутствуют.
Возвращаемое значение Примеры

fragment

Добавленный в: v1.1.0 Возвращает идентификатор фрагмента без начального символа #. Синтаксис
fragment(url)
Аргументы Возвращаемое значение Возвращает идентификатор фрагмента без начального символа #. String Примеры Пример использования
Query
SELECT fragment('https://clickhouse.com/docs/getting-started/quick-start/cloud#1-create-a-clickhouse-service');
Response
┌─fragment('http⋯ouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────┘

netloc

Добавленный в: v20.5.0 Извлекает сетевой адрес (username:password@host:port) из URL. Синтаксис
netloc(url)
Аргументы Возвращаемое значение Возвращает username:password@host:port из указанного URL. String Примеры Пример использования
Query
SELECT netloc('http://paul@www.example.com:80/');
Response
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80  │
└──────────────────────────┘

path

Добавленный в: v1.1.0 Возвращает путь URL без строки запроса. Синтаксис
path(url)
Аргументы
  • url — URL-адрес. String
Возвращаемое значение Возвращает путь URL-адреса без строки запроса. String Примеры Пример использования
Query
SELECT path('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value');
Response
┌─path('https://clickhouse.com/en/sql-reference/functions/url-functions/?query=value')─┐
│ /docs/sql-reference/functions/url-functions/                                         │
└──────────────────────────────────────────────────────────────────────────────────────┘

pathFull

Добавленный в: v1.1.0 То же, что и path, но включает строку запроса и фрагмент URL-адреса. Синтаксис
pathFull(url)
Аргументы Возвращаемое значение Возвращает путь URL-адреса, включая строку запроса и фрагмент. String Примеры Пример использования
Query
SELECT pathFull('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value#section');
Response
┌─pathFull('https://clickhouse.com⋯unctions/?query=value#section')─┐
│ /docs/sql-reference/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 Примеры Пример использования
Query
SELECT port('https://clickhouse.com:8443/docs'), port('https://clickhouse.com/docs', 443);
Response
┌─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 Примеры Пример использования
Query
SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');
Response
┌─port('http:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│                        0 │                     8080 │
└──────────────────────────┴──────────────────────────┘

протокол

Добавленный в: v1.1.0 Извлекает протокол из URL. Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet. Синтаксис
protocol(url)
Аргументы Возвращаемое значение Возвращает протокол URL или пустую строку, если определить его не удалось. String Примеры Пример использования
Query
SELECT protocol('https://clickhouse.com/');
Response
┌─protocol('https://clickhouse.com/')─┐
│ https                               │
└─────────────────────────────────────┘

queryString

Добавленный в: v1.1.0 Возвращает строку запроса URL без начального знака вопроса, символа # и всего, что следует после #. Синтаксис
queryString(url)
Аргументы Возвращаемое значение Возвращает строку запроса URL без начального знака вопроса и фрагмента. String Примеры Пример использования
Query
SELECT queryString('https://clickhouse.com/docs?query=value&param=123#section');
Response
┌─queryString(⋯3#section')─┐
│ query=value&param=123    │
└──────────────────────────┘

queryStringAndFragment

Добавленный в: v1.1.0 Возвращает строку запроса и идентификатор фрагмента URL. Синтаксис
queryStringAndFragment(url)
Аргументы Возвращаемое значение Возвращает строку запроса и идентификатор фрагмента URL. String Примеры Пример использования
Query
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section');
Response
┌─queryStringAnd⋯=123#section')─┐
│ query=value&param=123#section │
└───────────────────────────────┘

topLevelDomain

Добавленный в: v1.1.0 Извлекает домен верхнего уровня из URL.
URL можно указать как с протоколом, так и без него. Например:
svn+ssh://some.svn-hosting.com:80/repo/trunk
some.svn-hosting.com:80/repo/trunk
https://clickhouse.com/time/
Синтаксис
topLevelDomain(url)
Аргументы Возвращаемое значение Возвращает имя домена, если входную строку можно разобрать как URL. В противном случае возвращает пустую строку. String Примеры Пример использования
Query
SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
Response
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com                                                                │
└────────────────────────────────────────────────────────────────────┘

topLevelDomainRFC

Добавленный в: v22.10.0 Извлекает из URL домен верхнего уровня. Аналогична topLevelDomain, но соответствует RFC 3986. Синтаксис
topLevelDomainRFC(url)
Аргументы Возвращаемое значение Доменное имя, если входную строку можно разобрать как URL. В противном случае — пустая строка. String Примеры Пример использования
Query
SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');
Response
┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│                                                │ com                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
Последнее изменение 10 июня 2026 г.