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

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

Обзор

Примечание

Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и в большинстве случаев не следуют стандарту RFC-3986. Функции, которые реализуют RFC-3986, имеют суффикс RFC в имени функции и, как правило, работают медленнее.

Как правило, вы можете использовать варианты функций без RFC при работе с публично зарегистрированными доменами, которые не содержат ни пользовательской части, ни символа @. В таблице ниже указано, какие символы в URL могут () или не могут () быть разобраны соответствующими вариантами с RFC и без RFC:

Symbolnon-RFCRFC
' '
\t
<
>
%✔*
{
}
\
^
~✔*
[
]
;✔*
=✔*
&✔*

Символы, помеченные *, являются субразделителями в RFC 3986 и допускаются в пользовательской информации, следующей за символом @.

Существует два типа функций для работы с URL:

  • Функции, которые извлекают части URL. Если соответствующая часть отсутствует в URL, возвращается пустая строка.
  • Функции, которые удаляют часть URL. Если в URL нет ничего подобного, URL остаётся без изменений.
Примечание

Приведённые ниже функции сгенерированы из системной таблицы system.functions.

cutFragment

Добавлено в версии v1.1

Удаляет идентификатор фрагмента, включая символ # (решётку), из 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

Удаляет строку запроса, включая знак вопроса, из 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

Удаляет строку запроса и идентификатор фрагмента, включая вопросительный знак и символ решётки, из 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

Возвращает часть доменного имени, которая включает поддомены верхнего уровня до первого значимого поддомена.

Синтаксис

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

Возвращает часть домена, которая включает домены верхнего уровня и субдомены до первого значимого субдомена. Принимает имя пользовательского списка 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, имя_списка_доменных_зон)

Аргументы

  • 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

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

Возвращает часть домена, которая включает поддомены верхнего уровня вплоть до первого значимого поддомена, не удаляя 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: path is under top_level_domains_path -->
</top_level_domains_lists>
    

**Синтаксис**

```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

Возвращает часть доменного имени, включающую поддомены верхних уровней до первого значимого поддомена, при этом 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>
    <!-- ПРИМЕЧАНИЕ: путь указывается относительно top_level_domains_path -->
</top_level_domains_lists>
    

**Синтаксис**

```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')
www.example.custom

cutToFirstSignificantSubdomainRFC

Впервые представлена в: v22.10

Возвращает часть доменного имени, которая включает старшие поддомены вплоть до "первого значимого поддомена". Аналогична 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

Возвращает часть домена, которая включает субдомены верхнего уровня вплоть до «первого значимого субдомена», не удаляя префикс '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

Возвращает часть доменного имени, включающую поддомены верхнего уровня вплоть до «первого значимого поддомена», без удаления 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

Удаляет параметр name из URL, если он присутствует. Эта функция не кодирует и не декодирует символы в именах параметров, например Client ID и Client%20ID рассматриваются как разные имена параметров.

Синтаксис

cutURLParameter(url, name)

Аргументы

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

URL, из которого удалён параметр URL с именем name. String

Примеры

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

SELECT
    cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', 'a') AS url_без_a,
    cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', ['c', 'e']) AS url_без_c_и_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

Удаляет начальный 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

Принимает 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

Декодирует строки в URL-кодировке с использованием правил кодирования веб-форм (RFC-1866), при которых знаки + преобразуются в пробелы, а символы в percent-кодировке декодируются.

Синтаксис

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

Извлекает имя хоста из 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

Извлекает имя хоста из 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

Возвращает домен из 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

Возвращает домен без начального www., если он присутствует. Аналогична domainWithoutWWW, но соответствует RFC 3986.

Синтаксис

domainWithoutWWWRFC(url)

Аргументы

  • url — URL-адрес. String

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

Возвращает доменное имя, если входная строка может быть интерпретирована как URL-адрес (без ведущего www.), в противном случае — пустую строку. String

Примеры

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

SELECT
    domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment'),
    domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment');
┌─domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment')─┬─domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment')─┐
│                                                                                         │ example.com                                                                                │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘

encodeURLComponent

Появилась в: v22.3

Принимает обычную строку и преобразует её в URL-кодированный (процентное кодирование) формат, в котором специальные символы заменяются их процентно закодированными эквивалентами.

Синтаксис

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

Кодирует строки по правилам кодирования веб-форм (RFC-1866), при которых пробелы преобразуются в символ «+», а специальные символы представляются в виде percent-encoding.

Синтаксис

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

Возвращает значение параметра name в URL, если он присутствует, в противном случае возвращается пустая строка. Если в URL несколько параметров с таким именем, возвращается первое вхождение. Функция предполагает, что URL в аргументе url закодирован тем же способом, что и значение аргумента name.

Синтаксис

extractURLParameter(url, name)

Аргументы

  • url — URL. String
  • name — имя параметра. String

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

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

Примеры

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

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

extractURLParameterNames

Добавлено в: v1.1

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

Синтаксис

extractURLParameterNames(url)

Аргументы

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

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

Примеры

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

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

extractURLParameters

Добавлена в версии v1.1

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

Синтаксис

extractURLParameters(url)

Аргументы

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

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

Примеры

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

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

firstSignificantSubdomain

Добавлена в версии: v

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

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

Например, firstSignificantSubdomain('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain('https://news.clickhouse.com.tr/') = 'clickhouse'.

Список «незначимых» доменов второго уровня и другие детали реализации могут измениться в будущем.

Синтаксис

Аргументы

  • Нет.

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

Примеры

firstSignificantSubdomain

SELECT firstSignificantSubdomain('https://news.clickhouse.com/')

firstSignificantSubdomainRFC

Появилась в версии: v

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

Синтаксис

Аргументы

  • Нет.

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

Примеры

fragment

Добавлена в версии: v1.1

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

Синтаксис

fragment(url)

Аргументы

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

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

netloc

Введена в версии v20.5

Извлекает сетевую часть (username:password@host:port) из URL.

Синтаксис

netloc(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  │
└──────────────────────────┘

path

Добавлено в: v1.1

Возвращает путь из URL-адреса без строки запроса.

Синтаксис

path(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/                                         │
└──────────────────────────────────────────────────────────────────────────────────────┘

pathFull

Добавлено в версии: v1.1

То же, что и path, но включает строку запроса и фрагмент URL-адреса.

Синтаксис

pathFull(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 │
└──────────────────────────────────────────────────────────────────┘

port

Добавлена в версии: v20.5

Возвращает порт 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

Возвращает порт или 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 │
└──────────────────────────┴──────────────────────────┘

protocol

Добавлена в версии: v1.1

Извлекает протокол из URL-адреса.

Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet.

Синтаксис

protocol(url)

Аргументы

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

Возвращает протокол URL-адреса или пустую строку, если его не удаётся определить. String

Примеры

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

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

queryString

Добавлена в версии: v1.1

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

Синтаксис

queryString(url)

Аргументы

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

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

Примеры

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

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

queryStringAndFragment

Впервые представлена в: v1.1

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

Синтаксис

queryStringAndFragment(url)

Аргументы

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

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

Примеры

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

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

topLevelDomain

Добавлено в версии: v1.1

Извлекает домен верхнего уровня из 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 — URL-адрес. String

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

Возвращает доменное имя, если входную строку можно интерпретировать как URL-адрес. В противном случае — пустую строку. String

Примеры

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

SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com                                                                │
└────────────────────────────────────────────────────────────────────┘

topLevelDomainRFC

Добавлена в версии: v22.10

Извлекает домен верхнего уровня из URL-адреса. Аналогична topLevelDomain, но соответствует RFC 3986.

Синтаксис

topLevelDomainRFC(url)

Аргументы

  • url — URL-адрес. String

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

Доменное имя, если входная строка может быть интерпретирована как URL-адрес. В противном случае — пустая строка. String

Примеры

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

SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');
┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│                                                │ com                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘