Обзор
Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и по большей части не соответствуют стандарту RFC-3986.
К именам функций, реализующих RFC-3986, добавляется
RFC, и обычно они работают медленнее.RFC можно использовать при работе с общедоступными зарегистрированными доменами, которые не содержат ни пользовательской информации, ни символов @.
В таблице ниже показано, какие символы в URL могут (✔) или не могут (✗) быть разобраны соответствующими вариантами RFC и без RFC:
Символы, помеченные
*, являются подразделителями в RFC 3986 и допустимы в пользовательской информации после символа @.
Существует два типа URL-функций:
- Функции, которые извлекают части URL. Если соответствующая часть в URL отсутствует, возвращается пустая строка.
- Функции, которые удаляют часть URL. Если в URL нет ничего подобного, он остается без изменений.
Приведенные ниже функции сгенерированы из системной таблицы
system.functions.URLHierarchy
/, ? и # в пути и строке запроса. Последовательные символы-разделители считаются одним. Результат включает протокол и хост в качестве первого элемента, а затем всё более длинные пути, образующие иерархию.
Синтаксис
url— URL-адрес для обработки.String
Array(String)
Примеры
Базовое использование
Query
Response
URLPathHierarchy
/, ? и #. В отличие от URLHierarchy, результат не включает протокол и хост — он начинается с путь. Идущие подряд символы-разделители считаются одним.
Синтаксис
url— URL-адрес для обработки.String
Array(String)
Примеры
Базовое использование
Query
Response
cutFragment
url— URL.String
String
Примеры
Пример использования
Query
Response
cutQueryString
url— URL.String
String
Примеры
Пример использования
Query
Response
cutQueryStringAndFragment
url— URL.String
String
Примеры
Пример использования
Query
Response
cutToFirstSignificantSubdomain
url— URL или строка домена для обработки.String
String
Примеры
Пример использования
Query
Response
cutToFirstSignificantSubdomainCustom
url— URL или строка домена, которую нужно обработать.Stringtld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.const String
String
Примеры
Использование пользовательского списка TLD для нестандартных доменов
Query
Response
cutToFirstSignificantSubdomainCustomRFC
url— URL или доменное имя для обработки в соответствии с RFC 3986. -tld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.
String
Примеры
Пример использования
Query
Response
cutToFirstSignificantSubdomainCustomWithWWW
url— URL или строка домена для обработки. -tld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.
String
Примеры
Пример использования
Query
Response
cutToFirstSignificantSubdomainCustomWithWWWRFC
www.
Принимает имя пользовательского списка TLD.
Может быть полезно, если вам нужен актуальный список TLD или у вас есть собственный список.
Похоже на cutToFirstSignificantSubdomainCustomWithWWW, но соответствует RFC 3986.
Пример конфигурации
url— URL или строка домена, которые нужно обработать в соответствии с RFC 3986. -tld_list_name— имя пользовательского списка TLD, настроенного в ClickHouse.
www. String
Примеры
Разбор по RFC 3986 с сохранением www и пользовательским списком TLD
Query
Response
cutToFirstSignificantSubdomainRFC
cutToFirstSignificantSubdomain, но соответствует RFC 3986.
Синтаксис
url— URL или строка домена для обработки в соответствии с RFC 3986.String
String
Примеры
Пример использования
Query
Response
cutToFirstSignificantSubdomainWithWWW
cutToFirstSignificantSubdomain, но сохраняет префикс ‘www.’, если он есть.
Синтаксис
url— URL или строка домена для обработки.String
String
Примеры
Пример использования
Query
Response
cutToFirstSignificantSubdomainWithWWWRFC
cutToFirstSignificantSubdomainWithWWW, но соответствует RFC 3986.
Синтаксис
url— URL или строка домена для обработки в соответствии с RFC 3986.
String
Примеры
Пример использования
Query
Response
cutURLParameter
name из URL, если такой параметр присутствует.
Эта функция не кодирует и не декодирует символы в именах параметров; например, Client ID и Client%20ID считаются разными именами параметров.
Синтаксис
url— URL.Stringname— имя параметра URL.StringилиArray(String)
name. String
Примеры
Пример использования
Query
Response
cutWWW
www. из домена URL, если он есть.
Синтаксис
url— URL.String
www. в домене. String
Примеры
Пример использования
Query
Response
decodeURLComponent
url— URL.String
String
Примеры
Пример использования
Query
Response
decodeURLFormComponent
+ преобразуются в пробелы, а символы в процентной кодировке декодируются.
Синтаксис
url— URL.String
String
Примеры
Пример использования
Query
Response
domain
url— URL.String
String
Примеры
Пример использования
Query
Response
domainRFC
domain, но соответствует RFC 3986.
Синтаксис
url— URL.String
String
Примеры
Пример использования
Query
Response
domainWithoutWWW
www., если оно присутствует.
Синтаксис
url— URL.String
www.), в противном случае — пустую строку. String
Примеры
Пример использования
Query
Response
domainWithoutWWWRFC
www., если он есть. Аналогична domainWithoutWWW, но соответствует RFC 3986.
Синтаксис
url— URL.String
www.), в противном случае — пустую строку. String
Примеры
Пример использования
Query
Response
encodeURLComponent
url— URL.String
String
Примеры
Пример использования
Query
Response
encodeURLFormComponent
url— URL.String
String
Примеры
Пример использования
Query
Response
extractURLParameter
name в URL, если он присутствует; в противном случае возвращает пустую строку.
Если параметров с таким именем несколько, возвращается первое вхождение.
Функция предполагает, что параметр в аргументе url закодирован так же, как и в аргументе name.
Синтаксис
String
Примеры
Пример использования
Query
Response
extractURLParameterNames
url— URL.String
Array(String)
Примеры
Пример использования
Query
Response
extractURLParameters
name=value с параметрами URL.
Значения не декодируются.
Синтаксис
url— URL.String
name=value, соответствующих параметрам URL. Array(String)
Примеры
Пример использования
Query
Response
firstSignificantSubdomain
- Отсутствуют.
Query
Response
firstSignificantSubdomainCustom
url— URL-адрес, из которого нужно извлечь поддомен.Stringtld_list_name— Имя пользовательского списка TLD из конфигурации.String
String
Примеры
Базовое использование
Query
Response
firstSignificantSubdomainCustomRFC
firstSignificantSubdomainCustom, но использует разбор URL в соответствии с RFC 3986 вместо упрощённого алгоритма.
Синтаксис
url— URL-адрес, из которого нужно извлечь поддомен.Stringtld_list_name— имя пользовательского списка TLD из конфигурации.String
String
Примеры
Базовое использование
Query
Response
firstSignificantSubdomainRFC
- Отсутствуют.
fragment
url— URL.String
#. String
Примеры
Пример использования
Query
Response
netloc
username:password@host:port) из URL.
Синтаксис
url— URL.String
username:password@host:port из указанного URL. String
Примеры
Пример использования
Query
Response
path
url— URL-адрес.String
String
Примеры
Пример использования
Query
Response
pathFull
path, но включает строку запроса и фрагмент URL-адреса.
Синтаксис
url— URL.String
String
Примеры
Пример использования
Query
Response
port
default_port, если URL не содержит порт или его не удалось разобрать.
Синтаксис
url— URL.Stringdefault_port— Необязательный параметр. Номер порта, возвращаемый по умолчанию. По умолчанию0.UInt16
UInt16
Примеры
Пример использования
Query
Response
portRFC
default_port, если URL не содержит порта или его не удаётся разобрать.
Аналогично port, но соответствует RFC 3986.
Синтаксис
url— URL.Stringdefault_port— Необязательный параметр. Номер порта, возвращаемый по умолчанию. По умолчанию0.UInt16
UInt16
Примеры
Пример использования
Query
Response
протокол
url— URL.String
String
Примеры
Пример использования
Query
Response
queryString
# и всего, что следует после #.
Синтаксис
url— URL.String
String
Примеры
Пример использования
Query
Response
queryStringAndFragment
url— URL.String
String
Примеры
Пример использования
Query
Response
topLevelDomain
URL можно указать как с протоколом, так и без него.
Например:
url— URL.String
String
Примеры
Пример использования
Query
Response
topLevelDomainRFC
Добавленный в: v22.10.0 Извлекает из URL домен верхнего уровня. АналогичнаtopLevelDomain, но соответствует RFC 3986.
Синтаксис
url— URL.String
String
Примеры
Пример использования
Query
Response