Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и по большей части не соответствуют стандарту RFC-3986.
К именам функций, реализующих RFC-3986, добавляется RFC, и обычно они работают медленнее.
Обычно варианты функций без RFC можно использовать при работе с общедоступными зарегистрированными доменами, которые не содержат ни пользовательской информации, ни символов @.
В таблице ниже показано, какие символы в URL могут (✔) или не могут (✗) быть разобраны соответствующими вариантами RFC и без RFC:
| Symbol | non-RFC | RFC | |
|---|
| ’ ’ | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| | ✗ | ✗ |
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* | |
Символы, помеченные *, являются подразделителями в RFC 3986 и допустимы в пользовательской информации после символа @.
Существует два типа URL-функций:
- Функции, которые извлекают части URL. Если соответствующая часть в URL отсутствует, возвращается пустая строка.
- Функции, которые удаляют часть URL. Если в URL нет ничего подобного, он остается без изменений.
Приведенные ниже функции сгенерированы из системной таблицы system.functions.
Добавленный в: v1.1.0
Возвращает массив, содержащий 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']
Добавленный в: v1.1.0
Возвращает массив, содержащий компонент путь URL, обрезанный в конце по символам /, ? и #. В отличие от URLHierarchy, результат не включает протокол и хост — он начинается с путь. Идущие подряд символы-разделители считаются одним.
Синтаксис
Аргументы
url — URL-адрес для обработки. String
Возвращаемое значение
Возвращает массив всё более длинных компонентов пути URL-адреса, образующих иерархию. Array(String)
Примеры
Базовое использование
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b','/a/b?c=1']
Добавленный в: v1.1.0
Удаляет идентификатор фрагмента из 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 │
└────────────────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
Удаляет из URL строку запроса, включая вопросительный знак.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает 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 без строки запроса и идентификатора фрагмента. 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 или строка домена, которую нужно обработать. 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>
<!-- ПРИМЕЧАНИЕ: путь указывается относительно 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')─────┐
│ 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
Примеры
Пример использования
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>
{/* ПРИМЕЧАНИЕ: 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
SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
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 │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
Удаляет параметр name из URL, если такой параметр присутствует.
Эта функция не кодирует и не декодирует символы в именах параметров; например, Client ID и Client%20ID считаются разными именами параметров.
Синтаксис
cutURLParameter(url, name)
Аргументы
Возвращаемое значение
URL без параметра name. 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 │
└──────────────────────────────┴──────────────────────────┘
Добавленный в: v1.1.0
Удаляет начальный www. из домена 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 │
└────────────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
Принимает строку в 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; │
└────────────────────────────────────────┘
Добавленный в: 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 │
└───────────────────────────────────────────┘
Добавленный в: v1.1.0
Извлекает имя хоста из URL.
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 │
└────────────────────────────────────────────────────────┘
Добавленный в: v22.10.0
Извлекает имя хоста из URL.
Аналогично domain, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает имя хоста, если входную строку можно разобрать как 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 │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
Возвращает домен URL без начального www., если оно присутствует.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает доменное имя, если входную строку можно разобрать как URL (без префикса www.), в противном случае — пустую строку. String
Примеры
Пример использования
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
Возвращает домен без ведущего www., если он есть. Аналогична domainWithoutWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает доменное имя, если входную строку можно разобрать как 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 │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘
Добавленный в: v22.3.0
Принимает обычную строку и преобразует её в URL-кодированный формат (percent-encoding), в котором специальные символы заменяются их эквивалентами в процентной кодировке.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает 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 │
└──────────────────────────────────────────────────────────┘
Добавленный в: 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 │
└───────────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
Возвращает значение параметра name в URL, если он присутствует; в противном случае возвращает пустую строку.
Если параметров с таким именем несколько, возвращается первое вхождение.
Функция предполагает, что параметр в аргументе url закодирован так же, как и в аргументе name.
Синтаксис
extractURLParameter(url, name)
Аргументы
Возвращаемое значение
Возвращает значение параметра URL с заданным именем. String
Примеры
Пример использования
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1 │
└──────────────────────────┘
Добавленный в: v1.1.0
Возвращает массив строк с именами URL-параметров.
Значения не декодируются.
Синтаксис
extractURLParameterNames(url)
Аргументы
Возвращаемое значение
Возвращает массив строк с именами параметров URL. Array(String)
Примеры
Пример использования
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2'] │
└──────────────────────────┘
Добавленный в: v1.1.0
Возвращает массив строк name=value с параметрами URL.
Значения не декодируются.
Синтаксис
extractURLParameters(url)
Аргументы
Возвращаемое значение
Возвращает массив строк вида name=value, соответствующих параметрам URL. Array(String)
Примеры
Пример использования
SELECT extractURLParameters('http://example.com/?param1=value1¶m2=value2');
┌─extractURLParame⋯¶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/')
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')
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')
firstSignificantSubdomainRFC
Добавленный в: v22.10.0
Возвращает “первый значимый поддомен” согласно RFC 1034.
Синтаксис
firstSignificantSubdomainRFC(url)
Аргументы
Возвращаемое значение
Примеры
Добавленный в: v1.1.0
Возвращает идентификатор фрагмента без начального символа #.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает идентификатор фрагмента без начального символа #. String
Примеры
Пример использования
SELECT fragment('https://clickhouse.com/docs/getting-started/quick-start/cloud#1-create-a-clickhouse-service');
┌─fragment('http⋯ouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────┘
Добавленный в: v20.5.0
Извлекает сетевой адрес (username:password@host:port) из URL.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает username:password@host:port из указанного URL. String
Примеры
Пример использования
SELECT netloc('http://paul@www.example.com:80/');
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80 │
└──────────────────────────┘
Добавленный в: v1.1.0
Возвращает путь URL без строки запроса.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает путь URL-адреса без строки запроса. String
Примеры
Пример использования
SELECT path('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value');
┌─path('https://clickhouse.com/en/sql-reference/functions/url-functions/?query=value')─┐
│ /docs/sql-reference/functions/url-functions/ │
└──────────────────────────────────────────────────────────────────────────────────────┘
Добавленный в: v1.1.0
То же, что и path, но включает строку запроса и фрагмент URL-адреса.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает путь URL-адреса, включая строку запроса и фрагмент. String
Примеры
Пример использования
SELECT pathFull('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value#section');
┌─pathFull('https://clickhouse.com⋯unctions/?query=value#section')─┐
│ /docs/sql-reference/functions/url-functions/?query=value#section │
└──────────────────────────────────────────────────────────────────┘
Добавленный в: 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 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘
Добавленный в: 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:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│ 0 │ 8080 │
└──────────────────────────┴──────────────────────────┘
Добавленный в: v1.1.0
Извлекает протокол из URL.
Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает протокол URL или пустую строку, если определить его не удалось. String
Примеры
Пример использования
SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘
Добавленный в: v1.1.0
Возвращает строку запроса URL без начального знака вопроса, символа # и всего, что следует после #.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает строку запроса URL без начального знака вопроса и фрагмента. String
Примеры
Пример использования
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryString(⋯3#section')─┐
│ query=value¶m=123 │
└──────────────────────────┘
Добавленный в: v1.1.0
Возвращает строку запроса и идентификатор фрагмента URL.
Синтаксис
queryStringAndFragment(url)
Аргументы
Возвращаемое значение
Возвращает строку запроса и идентификатор фрагмента URL. String
Примеры
Пример использования
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value¶m=123#section │
└───────────────────────────────┘
Добавленный в: 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/
Синтаксис
Аргументы
Возвращаемое значение
Возвращает имя домена, если входную строку можно разобрать как 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.
Синтаксис
Аргументы
Возвращаемое значение
Доменное имя, если входную строку можно разобрать как 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 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
Последнее изменение 10 июня 2026 г.