Регистронезависимый поиск следует правилам преобразования символов в нижний и верхний регистр, принятым в английском языке. Например, прописная буква для
i в английском языке —
I, тогда как в турецком языке — İ; поэтому для языков, отличных от английского, результаты могут быть неожиданными.haystack), и искомая строка (в этом разделе она обозначается как needle) представляют собой текст в однобайтовой кодировке. Если это предположение
нарушено, исключение не сгенерируется, а результаты не определены. Поиск по строкам в кодировке UTF-8 обычно реализован в виде отдельных вариантов
функций. Аналогично, если используется вариант функции для UTF-8, а входные строки не являются текстом в кодировке UTF-8, исключение не сгенерируется, а
результаты не определены. Обратите внимание, что автоматическая нормализация Unicode не выполняется, однако для этого можно использовать
функции normalizeUTF8*().
Общие функции для работы со строками и функции замены в строках описаны отдельно.
Приведенная ниже документация сгенерирована на основе системной таблицы
system.functions.countMatches
Добавленный в: v21.1.0 Возвращает количество совпадений регулярного выражения в строке.Поведение этой функции зависит от версии ClickHouse:
- в версиях < v25.6 функция прекращает подсчёт на первом пустом совпадении, даже если шаблон регулярного выражения его допускает.
- в версиях >= 25.6 функция продолжает работу при возникновении пустого совпадения. Прежнее поведение можно восстановить с помощью настройки
count_matches_stop_at_empty_match = true;
haystack— Строка, в которой выполняется поиск.Stringpattern— Шаблон регулярного выражения.String
UInt64
Примеры
Подсчёт последовательностей цифр
Query
Response
countMatchesCaseInsensitive
Добавленный в: v21.1.0 КакcountMatches, но выполняет поиск без учета регистра.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringpattern— Шаблон регулярного выражения.const String
UInt64
Примеры
Подсчёт без учёта регистра
Query
Response
countSubstrings
Добавленный в: v21.1.0 Возвращает, сколько раз подстрокаneedle встречается в строке haystack.
Синтаксис
haystack— Строка, в которой выполняется поиск. String или Enum. -needle— Подстрока, которую требуется найти. String. -start_pos— Позиция (нумерация начинается с 1) вhaystack, с которой начинается поиск. UInt. Необязательный.
UInt64
Примеры
Пример использования
Query
Response
Query
Response
countSubstringsCaseInsensitive
Добавленный в: v21.1.0 КакcountSubstrings, но считает регистронезависимо.
Синтаксис
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Искомая подстрока.Stringstart_pos— Необязательно. Позиция (с отсчётом от 1) вhaystack, с которой начинается поиск.UInt*
needle в haystack. UInt64
Примеры
Пример использования
Query
Response
Query
Response
countSubstringsCaseInsensitiveUTF8
Добавленный в: v21.1.0 АналогичноcountSubstrings, но выполняет регистронезависимый подсчёт и предполагает, что haystack — строка UTF-8.
Синтаксис
haystack— UTF-8-строка, в которой выполняется поиск.StringилиEnumneedle— Подстрока, которую нужно найти.Stringstart_pos— Необязательно. Позиция (начиная с 1) вhaystack, с которой начинается поиск.UInt*
needle в haystack. UInt64
Примеры
Пример использования
Query
Response
Query
Response
extract
Добавленный в: v1.1.0 Извлекает первое совпадение с регулярным выражением из строки. Если ‘haystack’ не соответствует ‘pattern’, возвращается пустая строка. Эта функция использует библиотеку регулярных выражений RE2. Поддерживаемый синтаксис см. в re2. Если регулярное выражение содержит группы захвата (подшаблоны), функция сопоставляет входную строку с первой группой захвата. Синтаксисhaystack— Строка, из которой извлекаются данные.Stringpattern— Регулярное выражение, обычно содержащее группу захвата.const String
String
Примеры
Извлечение домена из адреса электронной почты
Query
Response
Query
Response
extractAll
Добавленный в: v1.1.0 Какextract, но возвращает массив всех совпадений шаблона регулярного выражения в строке.
Если ‘haystack’ не соответствует regex ‘pattern’, возвращается пустой массив.
Если регулярное выражение содержит группы захвата (подшаблоны), функция сопоставляет входную строку с первой группой захвата.
Синтаксис
haystack— Строка, из которой извлекаются фрагменты.Stringpattern— Шаблон регулярного выражения, при необходимости содержащий группы захвата.const String
Array(String)
Примеры
Извлечение всех чисел
Query
Response
Query
Response
extractAllGroupsHorizontal
Добавленный в: v20.5.0 Сопоставляет все группы в строке с помощью указанного регулярного выражения и возвращает массив массивов, где каждый массив содержит все совпадения одной и той же группы захвата, упорядоченные по номеру группы. Синтаксисs— Входная строка, из которой выполняется извлечение.StringилиFixedStringregexp— Регулярное выражение для поиска совпадений.const Stringилиconst FixedString
Array(Array(String))
Примеры
Пример использования
Query
Response
extractGroups
Добавленный в: v20.5.0 Извлекает группы захвата из первой подстроки, соответствующей регулярному выражению. Чтобы извлечь группы из всех совпадений, используйтеextractAllGroupsHorizontal или extractAllGroupsVertical.
Синтаксис
s— Входная строка, из которой выполняется извлечение.StringилиFixedStringregexp— Регулярное выражение. Должно содержать как минимум одну группу захвата. Константа.const Stringилиconst FixedString
1–N, где N — число групп захвата в regexp) из первого совпадения. Если совпадений нет, возвращается пустой массив. Array(String)
Примеры
Пример использования
Query
Response
hasAllTokens
Добавленный в: v25.10.0 АналогичноhasAnyTokens, но возвращает 1, если все токены в строке или массиве needle совпадают со строкой input, и 0 в противном случае. Если input — столбец, возвращаются все строки, удовлетворяющие этому условию.
Для столбца
input должен быть определён текстовый индекс для достижения оптимальной производительности.
Если текстовый индекс не определён, функция выполняет полное сканирование столбца, которое на порядки медленнее, чем поиск по индексу.- аргумент
input(всегда), и - аргумент
needle(если он задан как String) с использованием токенизатора, указанного для текстового индекса. Если для столбца не задан текстовый индекс, вместо него используется токенизаторsplitByNonAlpha. Если аргументneedleимеет тип Array(String), каждый элемент массива рассматривается как токен — дополнительная токенизация не выполняется. Если для текстового индекса настроено выражение предобработчик, предобработчик применяется кneedle(если он задан какString) перед токенизацией. Если для текстового индекса настроено выражение постпроцессор, постпроцессор применяется к токенамneedleи токенамinput(то есть к обоим после токенизации).
Когда текстовый индекс определяет предобработчик (например,
lowerUTF8), hasAllTokens применяет его к input и, если needles имеет тип String, к needles перед токенизацией. Когда needles имеет тип Array(String), его элементы передаются как есть, и предобработчик к ним не применяется.
Предобработчик применяется только при использовании текстового индекса, поэтому результаты могут различаться между запросами, использующими текстовый индекс, и запросами, которые его не используют (например, SETTINGS use_skip_indexes = 0).
Эта несогласованность допускается для повышения удобства полнотекстового поиска.hasAllToken
Аргументы
input— Входной столбец.StringилиFixedStringилиNullable(String)илиNullable(FixedString)илиArray(String)илиArray(FixedString)илиArray(Nullable(String))илиArray(Nullable(FixedString))needles— Искомые токены.StringилиArray(String)tokenizer— токенизатор, который следует использовать. Допустимые аргументы:splitByNonAlpha,splitByString,splitByRegexp,asciiCJK,chinese,icu('<locale>'),japanese,ngrams,sparseGramsиarray. Необязательный параметр; если он явно не задан, по умолчанию используетсяsplitByNonAlpha.const String
UInt8
Примеры
Базовое использование со строковым значением
Query
Response
Query
Response
tokens
Query
Response
Query
Response
Query
Query
Response
Query
Response
Query
Response
hasAnyTokens
Добавлено в: v25.10.0 Возвращает 1, если хотя бы один токен из строки или массиваneedle совпадает со строкой input, и 0 в противном случае. Если input является столбцом, возвращает все строки, удовлетворяющие данному условию.
Для оптимальной производительности для столбца
input следует определить текстовый индекс.
Если текстовый индекс не определён, функция выполняет полное сканирование столбца, которое на порядки медленнее, чем поиск по индексу.- аргумент
input(всегда), и - аргумент
needle(если он задан как String) с использованием токенизатора, указанного для текстового индекса. Если для столбца не определён текстовый индекс, вместо него используется токенизаторsplitByNonAlpha. Если аргументneedleимеет тип Array(String), каждый элемент массива обрабатывается как токен — дополнительная токенизация не выполняется. Если для текстового индекса настроено выражение предобработчик, предобработчик применяется кneedle(если он задан какString) перед токенизацией. Если для текстового индекса настроено выражение постпроцессор, постпроцессор применяется к токенамneedleиinput(то есть к обоим после токенизации).
Если для текстового индекса определён предобработчик (например,
lowerUTF8), hasAnyTokens применяет его к input и, если needles имеет тип String, к needles перед токенизацией. Если needles имеет тип Array(String), его элементы передаются как есть, и предобработчик к ним не применяется.
Предобработчик применяется только при использовании текстового индекса, поэтому результаты могут различаться между запросами, использующими текстовый индекс, и запросами, которые его не используют (например, SETTINGS use_skip_indexes = 0).
Такая несогласованность допускается для повышения удобства полнотекстового поиска.hasAnyToken
Аргументы
input— Входной столбец.StringилиFixedStringилиNullable(String)илиNullable(FixedString)илиArray(String)илиArray(FixedString)илиArray(Nullable(String))илиArray(Nullable(FixedString))needles— Искомые токены.StringилиArray(String)tokenizer— токенизатор, который следует использовать. Допустимые аргументы:splitByNonAlpha,splitByString,splitByRegexp,asciiCJK,chinese,icu('<locale>'),japanese,ngrams,sparseGramsиarray. Необязательный параметр; если явно не задан, по умолчанию используетсяsplitByNonAlpha.const String
1, если найдено хотя бы одно совпадение, иначе 0. UInt8
Примеры
Базовое использование со строковым искомым значением
Query
Response
Query
Response
tokens
Query
Response
Query
Query
Response
Query
Response
mapValues
Query
Response
hasPhrase
Добавленный в: v26.4.0 Проверяет, содержит лиinput все токены из phrase, идущие подряд.
Для столбца
input для оптимальной производительности должен быть определен текстовый индекс.
Если текстовый индекс не определен, функция выполняет полное сканирование столбца, которое на порядки медленнее, чем поиск по индексу.input и phrase с помощью токенизатора, указанного для текстового индекса.
Если для столбца не определен текстовый индекс, вместо него используется токенизатор splitByNonAlpha — если только токенизатор не передан как необязательный третий аргумент.
Аргумент токенизатора должен быть одним из следующих: splitByNonAlpha, splitByString, splitByRegexp, ngrams, asciiCJK или icu.
Обратите внимание, что splitByRegexp не поддерживается для hasPhrase, когда текстовый индекс также определяет постпроцессор.
Когда текстовый индекс определяет предобработчик (например,
lowerUTF8), hasPhrase применяет его к input и phrase перед токенизацией.
Предобработчик применяется только при использовании текстового индекса, поэтому результаты могут различаться между запросами, использующими текстовый индекс, и запросами, которые его не используют (например, SETTINGS use_skip_indexes = 0).
Эта несогласованность допускается для повышения удобства полнотекстового поиска.hasToken, hasAnyTokens и hasAllTokens, hasPhrase требует, чтобы токены шли в том же порядке
и без каких-либо токенов между ними. Например, hasPhrase('the quick brown fox', 'quick fox') возвращает 0,
поскольку “brown” находится между “quick” и “fox”.
Синтаксис
matchPhrase
Аргументы
input— Входной столбец.StringилиFixedStringphrase— Искомая фраза.const Stringtokenizer— Используемый токенизатор. Необязательный параметр, по умолчанию —splitByNonAlpha.const String
1, если фраза найдена как непрерывная последовательность токенов, иначе 0. UInt8
Примеры
Совпадение по фразе
Query
Response
Query
Response
hasSubsequence
Добавленный в: v23.7.0 Проверяет, является ли needle подпоследовательностью haystack. Подпоследовательность строки — это последовательность, которую можно получить из другой строки, удалив некоторые или не удалив ни одного символа без изменения порядка оставшихся символов. Синтаксисhaystack— Строка, в которой ищется подпоследовательность.Stringneedle— Подпоследовательность, которую нужно найти.String
1, если needle является подпоследовательностью haystack, и 0 в противном случае. UInt8
Примеры
Базовая проверка подпоследовательности
Query
Response
Query
Response
hasSubsequenceCaseInsensitive
Добавленный в: v23.7.0 КакhasSubsequence, но ищет без учета регистра.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle— Подпоследовательность, которую требуется найти.String
UInt8
Примеры
Пример использования
Query
Response
hasSubsequenceCaseInsensitiveUTF8
Добавленный в: v23.7.0 АналогичноhasSubsequenceUTF8, но поиск выполняется регистронезависимо.
Синтаксис
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— строка-подпоследовательность в кодировке UTF-8, которую требуется найти.String
needle является подпоследовательностью haystack, иначе 0. UInt8
Примеры
Пример использования
Query
Response
hasSubsequenceUTF8
Добавленный в: v23.7.0 КакhasSubsequence, но предполагается, что haystack и needle — строки в кодировке UTF-8.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle— Искомая подпоследовательность.String
1, если needle является подпоследовательностью haystack, в противном случае — 0. UInt8
Примеры
Пример использования
Query
Response
Query
Response
hasToken
Добавленный в: v20.1.0hasToken имеет ряд подводных камней при использовании для поиска в текстовых индексах с токенизаторами, отличными от splitByNonAlpha, и/или с выражениями предобработки/постпроцессора.
Вместо него рекомендуется использовать hasAnyTokens и hasAllTokens.[0-9A-Za-z_] (цифры, символы ASCII и символ подчёркивания).
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringtoken— Токен, который нужно найти.const String
1, если токен найден, и 0 в противном случае. UInt8
Примеры
Поиск токена
Query
Response
hasTokenCaseInsensitive
Добавленный в: v20.1.0 Выполняет регистронезависимый поиск needle в haystack с использованием индекса tokenbf_v1.У этой функции есть определённые особенности при использовании нестандартных токенизаторов и выражений предобработки или постобработки.
Вместо неё рекомендуется использовать
hasAnyTokens и hasAllTokens.- Отсутствуют.
hasTokenCaseInsensitiveOrNull
Добавленный в: v23.1.0 Выполняет регистронезависимый поиск needle в haystack с использованием индекса tokenbf_v1. Возвращает NULL, если needle некорректно сформирован.У этой функции есть определённые особенности при использовании нестандартных токенизаторов, а также выражения предобработки или постобработки.
Вместо неё рекомендуется использовать
hasAnyTokens и hasAllTokens.- Отсутствуют.
hasTokenOrNull
Добавленный в: v20.1.0 КакhasToken, но возвращает NULL, если токен некорректно сформирован.
Синтаксис
haystack— Строка, в которой выполняется поиск. Должна быть константой.Stringtoken— Токен, который нужно найти.const String
1, если токен найден, иначе 0; null, если токен некорректен. Nullable(UInt8)
Примеры
Пример использования
Query
Response
highlight
Добавленный в: v26.4.0 Выделяет вхождения поисковых запросов в текстовой строке, оборачивая их в HTML-теги. Функция выполняет регистронезависимый поиск ASCII. Если несколько поисковых запросов перекрываются или расположены в тексте вплотную друг к другу, совпавшие области объединяются в один выделенный фрагмент. Синтаксисhaystack— Текст, в котором выполняется поиск.StringилиFixedStringneedles— Массив строк поиска, которые нужно выделить.const Array(String)open_tag— Открывающий тег, вставляемый перед каждым совпадением. По умолчанию:<em>.const Stringclose_tag— Закрывающий тег, вставляемый после каждого совпадения. По умолчанию:</em>.const String
String
Примеры
Простое выделение
Query
Response
Query
Response
ilike
Добавленный в: v20.6.0 Какlike, но выполняет регистронезависимый поиск. Поддерживает необязательное предложение ESCAPE (см. like).
Синтаксис
haystack— строка, в которой выполняется поиск.StringилиFixedStringpattern— шаблон регулярного выражения LIKE, с которым выполняется сопоставление.Stringescape_character— необязательная односимвольная строка, используемая в качестве символа экранирования вместо\. По умолчанию:\.String
1, если строка соответствует шаблону регулярного выражения LIKE без учёта регистра, иначе 0. UInt8
Примеры
Пример использования
Query
Response
like
Добавленный в: v1.1.0 Возвращает, соответствует ли строкаhaystack выражению LIKE pattern.
Выражение LIKE может содержать обычные символы и следующие метасимволы:
%обозначает любое количество любых символов (включая ноль символов)._обозначает один любой символ.\используется для экранирования литеральных%,_и\.
_ соответствует кодовой точке Unicode ¥, которая в UTF-8 представлена двумя байтами.
Если haystack или выражение LIKE не являются корректным UTF-8, поведение не определено.
Автоматическая нормализация Unicode не выполняется; для этого можно использовать функции normalizeUTF8*.
Чтобы сопоставлять литеральные %, _ и \ (которые являются метасимволами LIKE), поставьте перед ними обратную косую черту: \%, \_ и \\.
Обратная косая черта теряет своё специальное значение (то есть интерпретируется буквально), если стоит перед символом, отличным от %, _ или \.
В ClickHouse обратные косые черты в строках также нужно экранировать в соответствии с синтаксисом строк, поэтому фактически нужно писать
\\%, \\_ и \\\\.LIKE вида %needle% функция работает так же быстро, как функция position.
Все остальные выражения LIKE внутренне преобразуются в регулярное выражение и выполняются с производительностью, аналогичной функции match.
предложение ESCAPE
Необязательное предложение ESCAPE задаёт пользовательский символ экранирования (это должен быть один ASCII-символ).
Если он указан, пользовательский символ экранирования заменяет используемую по умолчанию обратную косую черту для экранирования метасимволов % и _.
Символ экранирования может экранировать три вещи: % (литеральный знак процента), _ (литеральное подчёркивание) и самого себя (литеральный символ экранирования).
При использовании пользовательского символа экранирования обратная косая черта не имеет специального значения и интерпретируется как литеральный символ.
Синтаксис
haystack— строка, в которой выполняется поиск.StringилиFixedStringpattern— шаблон регулярного выраженияLIKEдля поиска совпадений. Может содержать%(соответствует любому количеству символов),_(соответствует одному символу) и\для экранирования.Stringescape_character— необязательная строка из одного символа, используемая в качестве символа экранирования вместо\. По умолчанию:\.String
1, если строка соответствует шаблону регулярного выражения LIKE, в противном случае — 0. UInt8
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
ESCAPE
Query
Response
locate
Добавленный в: v18.16.0 То же, что иposition, но аргументы haystack и locate поменяны местами.
Поведение этой функции зависит от версии ClickHouse:
- в версиях < v24.3
locateбыл псевдонимом функцииpositionи принимал аргументы(haystack, needle[, start_pos]). - в версиях >= 24.3
locate— отдельная функция (для лучшей совместимости с MySQL) и принимает аргументы(needle, haystack[, start_pos]). Предыдущее поведение можно восстановить с помощью настройкиfunction_locate_has_mysql_compatible_argument_order = false.
needle— Искомая подстрока.Stringhaystack— Строка, в которой выполняется поиск.StringилиEnumstart_pos— Необязательно. Позиция вhaystack(с отсчётом от 1), с которой начинается поиск.UInt
0, если подстрока не найдена. UInt64
Примеры
Базовое использование
Query
Response
match
Добавленный в: v1.1.0 Проверяет, соответствует ли указанная строка заданному шаблону регулярного выражения. Эта функция использует библиотеку регулярных выражений RE2. Поддерживаемый синтаксис см. в re2. Сопоставление выполняется в предположении UTF-8; например,¥ внутри занимает два байта, но при сопоставлении считается одной кодовой точкой.
Регулярное выражение не должно содержать null-байты.
Если haystack или шаблон регулярного выражения не являются корректным UTF-8, поведение не определено.
В отличие от поведения re2 по умолчанию, . соответствует символам перевода строки. Чтобы отключить это, добавьте в начало шаблона (?-s).
Шаблон не привязан к началу и концу строки. Чтобы сопоставить строку целиком, явно добавьте якоря ^ и $.
Если вам нужно просто искать подстроки, вместо этой функции можно использовать like или position — они работают значительно быстрее.
Альтернативный синтаксис оператора: haystack REGEXP pattern или haystack ~ pattern (в стиле PostgreSQL).
Синтаксис
REGEXP_MATCHES
Аргументы
haystack— Строка, в которой ищется шаблон.Stringpattern— Шаблон регулярного выражения. Может быть константой или поступать из столбца.String
1, если найдено совпадение с шаблоном, иначе — 0. UInt8
Примеры
Простое сопоставление с шаблоном
Query
Response
Query
Response
Query
Response
matchCaseInsensitive
Добавленный в: v26.8.0 Аналогичнаmatch, но выполняет регистронезависимое сопоставление.
Эта функция использует библиотеку регулярных выражений RE2. Поддерживаемый синтаксис см. в re2.
Альтернативный синтаксис оператора: haystack ~* pattern (в стиле PostgreSQL).
Синтаксис
haystack— Строка, в которой ищется шаблон.Stringpattern— Шаблон регулярного выражения. Может быть константой или поступать из столбца.String
1, если найдено регистронезависимое совпадение с шаблоном, иначе — 0. UInt8
Примеры
Пример использования
Query
Response
multiFuzzyMatchAllIndices
Добавленный в: v20.1.0 КакmultiFuzzyMatchAny, но возвращает массив всех индексов в произвольном порядке, совпадающих со строкой haystack в пределах постоянного расстояния редактирования.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringdistance— Максимальное расстояние редактирования для нечеткого сопоставления.UInt8pattern— Массив шаблонов регулярного выражения для сопоставления.Array(String)
haystack в пределах указанного расстояния редактирования, в любом порядке. Если совпадений нет, возвращается пустой массив. Array(UInt64)
Примеры
Пример использования
Query
Response
multiFuzzyMatchAny
Добавленный в: v20.1.0 КакmultiMatchAny, но возвращает 1, если любой шаблон регулярного выражения совпадает со строкой в пределах фиксированного расстояния редактирования.
Эта функция использует экспериментальную возможность библиотеки hyperscan и в некоторых пограничных случаях может работать медленно.
Производительность зависит от значения расстояния редактирования и используемых шаблонов регулярного выражения, но по сравнению с вариантами без нечёткого сопоставления она всегда ниже.
Семейство функций
multiFuzzyMatch*() не поддерживает регулярные выражения UTF-8 (они обрабатываются как последовательность байтов) из-за ограничений hyperscan.haystack— Строка, в которой выполняется поиск.Stringdistance— Максимальное расстояние редактирования для нечеткого сопоставления.UInt8pattern— Необязательно. Массив шаблонов регулярного выражения для сопоставления.Array(String)
1, если хотя бы один шаблон регулярного выражения совпадает со строкой haystack в пределах указанного расстояния редактирования, в противном случае — 0. UInt8
Примеры
Пример использования
Query
Response
multiFuzzyMatchAnyIndex
Добавленный в: v20.1.0 АналогичноmultiFuzzyMatchAny, но возвращает любой индекс, для которого haystack совпадает в пределах постоянного расстояния редактирования.
Синтаксис
haystack— Строка, по которой выполняется поиск.Stringdistance— Максимальное расстояние редактирования для нечеткого сопоставления.UInt8pattern— Массив шаблонов регулярного выражения для поиска совпадений.Array(String)
haystack в пределах указанного расстояния редактирования; в противном случае — 0. UInt64
Примеры
Пример использования
Query
Response
multiMatchAllIndices
Добавленный в: v20.1.0 Как иmultiMatchAny, но возвращает массив всех индексов, совпадающих с haystack, в любом порядке.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringpattern— Шаблоны регулярного выражения, с которыми выполняется сопоставление.String
haystack, в произвольном порядке. Если совпадений не найдено, возвращается пустой массив. Array(UInt64)
Примеры
Пример использования
Query
Response
multiMatchAny
Добавленный в: v20.1.0 Проверяет, соответствует ли исходной строке хотя бы один из нескольких шаблонов регулярного выражения. Если вам нужно искать в строке только несколько подстрок, вместо этого можно использовать функциюmultiSearchAny — она работает гораздо быстрее.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringpattern1[, pattern2, ...]— Массив из одного или нескольких шаблонов регулярных выражений.Array(String)
1, если найдено совпадение хотя бы с одним шаблоном, в противном случае — 0. UInt8
Примеры
Сопоставление с несколькими шаблонами
Query
Response
Query
Response
multiMatchAnyIndex
Добавленный в: v20.1.0 АналогичнаmultiMatchAny, но возвращает любой индекс, совпадающий со строкой haystack.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringpattern— Шаблоны регулярных выражений, с которыми выполняется сопоставление.Array(String)
UInt64
Примеры
Пример использования
Query
Response
multiSearchAllPositions
Добавленный в: v20.1.0 Аналогичноposition, но возвращает массив позиций (в байтах, начиная с 1) для нескольких подстрок needle в строке haystack.
Все функции multiSearch*() поддерживают не более 2^8 подстрок needle.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— Массив из одной или нескольких подстрок, которые нужно найти.Array(String)
0, если подстрока не найдена. Array(UInt64)
Примеры
Поиск по нескольким подстрокам
Query
Response
multiSearchAllPositionsCaseInsensitive
Добавленный в: v20.1.0 АналогичноmultiSearchAllPositions, но игнорирует регистр.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— Массив из одной или нескольких подстрок, которые нужно найти.Array(String)
0, если подстрока не найдена. Array(UInt64)
Примеры
Регистронезависимый поиск нескольких подстрок
Query
Response
multiSearchAllPositionsCaseInsensitiveUTF8
Добавленный в: v20.1.0 КакmultiSearchAllPositionsUTF8, но позволяет игнорировать регистр.
Синтаксис
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— подстроки в кодировке UTF-8, которые нужно найти.Array(String)
Array
Примеры
Регистронезависимый поиск UTF-8
Query
Response
multiSearchAllPositionsUTF8
Добавленный в: v20.1.0 АналогичноmultiSearchAllPositions, но предполагается, что haystack и подстроки needle являются строками в кодировке UTF-8.
Синтаксис
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle1[, needle2, ...]— массив подстрок в кодировке UTF-8, которые нужно найти.Array(String)
0, если подстрока не найдена. Array
Примеры
Множественный поиск UTF-8
Query
Response
multiSearchAny
Добавленный в: v20.1.0 Проверяет, совпадает ли хотя бы одна из строк needle со строкой haystack. ФункцииmultiSearchAnyCaseInsensitive, multiSearchAnyUTF8 и multiSearchAnyCaseInsensitiveUTF8 предоставляют регистронезависимые варианты и/или варианты с поддержкой UTF-8 для этой функции.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— Массив подстрок, которые нужно найти.Array(String)
1, если найдено хотя бы одно совпадение, иначе — 0. UInt8
Примеры
Поиск по любому совпадению
Query
Response
multiSearchAnyCaseInsensitive
Добавленный в: v20.1.0 Как multiSearchAny, но позволяет игнорировать регистр символов. Синтаксисhaystack— Строка, в которой выполняется поиск.Stringneedle— Подстроки, которые требуется найти.Array(String)
1, если найдено хотя бы одно регистронезависимое совпадение, иначе — 0. UInt8
Примеры
Регистронезависимый поиск
Query
Response
multiSearchAnyCaseInsensitiveUTF8
Добавленный в: v20.1.0 То же, что и multiSearchAnyUTF8, но игнорирует регистр. Синтаксисhaystack— UTF-8-строка, в которой выполняется поиск.Stringneedle— UTF-8-подстроки, которые нужно найти.Array(String)
1, если найдено хотя бы одно регистронезависимое совпадение, в противном случае — 0. UInt8
Примеры
Для UTF-8-строки ‘Здравствуйте’ проверьте, присутствует ли символ ‘з’ (в нижнем регистре)
Query
Response
multiSearchAnyUTF8
Добавленный в: v20.1.0 Как и multiSearchAny, но предполагает, чтоhaystack является UTF-8-строкой, а подстроки needle — UTF-8-подстроками.
Синтаксис
haystack— UTF-8-строка, в которой выполняется поиск.Stringneedle— UTF-8-подстроки, которые требуется найти.Array(String)
1, если найдено хотя бы одно совпадение, в противном случае — 0. UInt8
Примеры
Для UTF-8-строки ‘你好,世界’ (‘Hello, world’) проверьте, содержит ли строка символы 你 или 界
Query
Response
multiSearchFirstIndex
Добавленный в: v20.1.0 Выполняет поиск нескольких строкneedle в строке haystack (с учетом регистра) и возвращает индекс первой найденной строки needle, начиная с 1.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedles— Массив строк, которые нужно найти.Array(String)
needles, найденной в haystack (позиция в массиве needles, начиная с 1). Возвращает 0, если ни одна из строк из needles не найдена. Поиск чувствителен к регистру. UInt64
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexCaseInsensitive
Добавленный в: v20.1.0 Возвращает индексi (начиная с 1) самого левого вхождения needle_i в строке haystack; если совпадение не найдено, возвращает 0.
Игнорирует регистр.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle— Подстроки, которые нужно найти.Array(String)
needle. Если совпадений нет, возвращает 0. UInt8
Примеры
Пример использования
Query
Response
multiSearchFirstIndexCaseInsensitiveUTF8
Добавленный в: v20.1.0 Ищет несколько строк needle в строке haystack регистронезависимым способом с поддержкой кодировки UTF-8 и возвращает индекс первого найденного образца, начиная с 1. Синтаксисhaystack— Строка, в которой выполняется поиск.Stringneedles— Массив строк, которые нужно найти.Array(String)
needles) первой строки из needles, найденной в haystack. Возвращает 0, если не найдено ни одной строки. Поиск регистронезависим и выполняется с учетом кодировки UTF-8. UInt64
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexUTF8
Добавленный в: v20.1.0 Возвращает индексi (начиная с 1) самого левого найденного needle_i в строке haystack; в противном случае возвращает 0.
Предполагается, что haystack и needle — UTF-8-строки.
Синтаксис
haystack— UTF-8-строка, в которой выполняется поиск.Stringneedle— массив UTF-8-подстрок, которые нужно найти.Array(String)
needle. Если совпадений нет, возвращает 0. UInt8
Примеры
Пример использования
Query
Response
multiSearchFirstPosition
Добавленный в: v20.1.0 Какposition, но возвращает смещение самого первого вхождения в строке haystack, соответствующего любой из нескольких строк needle.
Функции multiSearchFirstPositionCaseInsensitive, multiSearchFirstPositionUTF8 и multiSearchFirstPositionCaseInsensitiveUTF8 предоставляют регистронезависимый и/или UTF-8 варианты этой функции.
Синтаксис
haystack— Строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— Массив из одной или нескольких подстрок, которые нужно найти.Array(String)
haystack с любой из подстрок needle, либо 0, если совпадений нет. UInt64
Примеры
Поиск первой позиции
Query
Response
multiSearchFirstPositionCaseInsensitive
Добавленный в: v20.1.0 Аналогично multiSearchFirstPosition, но игнорирует регистр. Синтаксисhaystack— Строка, в которой выполняется поиск.Stringneedle— Массив подстрок, которые требуется найти.Array(String)
haystack, совпадающего с любой из строк needle. Возвращает 0, если совпадений нет. UInt64
Примеры
Первая позиция при регистронезависимом поиске
Query
Response
multiSearchFirstPositionCaseInsensitiveUTF8
Добавленный в: v20.1.0 Аналогично multiSearchFirstPosition, но предполагается, чтоhaystack и needle — строки UTF-8, при этом регистр игнорируется.
Синтаксис
haystack— UTF-8-строка, в которой выполняется поиск.Stringneedle— массив UTF-8-подстрок для поиска.Array(String)
haystack, соответствующего любой из строк needle, без учета регистра. Возвращает 0, если совпадений нет. UInt64
Примеры
Найдите смещение самого левого вхождения в UTF-8-строке ‘Здравствуй, мир’ (‘Hello, world’), соответствующего любой из заданных подстрок
Query
Response
multiSearchFirstPositionUTF8
Добавленный в: v20.1.0 Аналогично multiSearchFirstPosition, но предполагается, чтоhaystack и needle — строки в кодировке UTF-8.
Синтаксис
haystack— UTF-8-строка, в которой выполняется поиск.Stringneedle— массив UTF-8-подстрок, которые нужно найти.Array(String)
haystack, совпадающего с любой из строк needle. Возвращает 0, если совпадений нет. UInt64
Примеры
Найдите смещение самого левого вхождения в UTF-8-строке ‘Здравствуй, мир’ (‘Hello, world’), совпадающего с любой из заданных строк needle
Query
Response
ngramDistance
Добавленный в: v20.1.0 Вычисляет 4-граммное расстояние между двумя строками. Для этого вычисляется симметрическая разность двух мультимножеств 4-грамм и нормализуется по сумме их мощностей. Чем меньше возвращаемое значение, тем более похожи строки. Для регистронезависимого поиска и/или в формате UTF8 используйте функцииngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8.
Синтаксис
0 до 1. Чем меньше возвращаемое значение, тем более похожи строки. Float32
Примеры
Вычисление 4-граммного расстояния
Query
Response
ngramDistanceCaseInsensitive
Добавленный в: v20.1.0 Предоставляет регистронезависимый вариантngramDistance.
Вычисляет 4-граммное расстояние между двумя строками без учета регистра.
Чем меньше возвращаемое значение, тем больше строки похожи друг на друга.
Синтаксис
0 до 1. Float32
Примеры
Регистронезависимое 4-граммное расстояние
Query
Response
ngramDistanceCaseInsensitiveUTF8
Добавленный в: v20.1.0 Предоставляет регистронезависимый UTF-8-вариантngramDistance.
Предполагается, что строки needle и haystack закодированы в UTF-8, при этом регистр игнорируется.
Вычисляет 3-граммное расстояние между двумя UTF-8-строками без учета регистра.
Чем меньше возвращаемое значение, тем больше сходство между строками.
Синтаксис
haystack— Первая строка для сравнения в кодировке UTF-8.Stringneedle— Вторая строка для сравнения в кодировке UTF-8.String
0 до 1. Float32
Примеры
Регистронезависимое 3-граммное расстояние UTF-8
Query
Response
ngramDistanceUTF8
Добавленный в: v20.1.0 Предоставляет вариантngramDistance для строк UTF-8.
Предполагается, что строки needle и haystack закодированы в UTF-8.
Вычисляет 3-граммное расстояние между двумя строками UTF-8.
Чем меньше возвращаемое значение, тем больше похожи строки.
Синтаксис
haystack— Первая строка для сравнения в кодировке UTF-8.Stringneedle— Вторая строка для сравнения в кодировке UTF-8.String
0 до 1. Float32
Примеры
3-граммное расстояние в UTF-8
Query
Response
ngramSearch
Добавленный в: v20.1.0 Проверяет, меньше или равно ли 4-граммное расстояние между двумя строками заданному пороговому значению. Для регистронезависимого поиска и/или в формате UTF8 используйте функцииngramSearchCaseInsensitive, ngramSearchUTF8, ngramSearchCaseInsensitiveUTF8.
Синтаксис
1, если 4-граммное расстояние между строками меньше или равно порогу (1.0 по умолчанию), в противном случае — 0. UInt8
Примеры
Поиск с использованием 4-грамм
Query
Response
ngramSearchCaseInsensitive
Добавленный в: v20.1.0 Представляет собой регистронезависимый вариантngramSearch.
Вычисляет несимметрическую разность между строкой needle и строкой haystack, то есть число n-грамм в needle минус число общих n-грамм, нормализованное по числу n-грамм в needle.
Проверяет, что 4-граммное расстояние между двумя строками меньше или равно заданному порогу без учета регистра.
Синтаксис
1, если 4-граммное расстояние между строками меньше или равно пороговому значению (1.0 по умолчанию), иначе — 0. UInt8
Примеры
Регистронезависимый поиск с помощью 4-грамм
Query
Response
ngramSearchCaseInsensitiveUTF8
Добавленный в: v20.1.0 Предоставляет регистронезависимую UTF-8-версиюngramSearch.
Предполагает, что haystack и needle являются строками UTF-8, и игнорирует регистр.
Проверяет, что 3-граммное расстояние между двумя строками UTF-8 меньше или равно заданному порогу без учёта регистра.
Синтаксис
1, если 3-граммное расстояние между строками меньше или равно пороговому значению (по умолчанию 1.0), в противном случае — 0. UInt8
Примеры
Регистронезависимый поиск UTF-8 с использованием 3-грамм
Query
Response
ngramSearchUTF8
Добавленный в: v20.1.0 Предоставляет вариант функцииngramSearch для UTF-8.
Предполагается, что haystack и needle — строки UTF-8.
Проверяет, что 3-граммное расстояние между двумя строками UTF-8 меньше или равно заданному порогу.
Синтаксис
1, если 3-граммное расстояние между строками меньше или равно пороговому значению (по умолчанию 1.0), иначе — 0. UInt8
Примеры
Поиск по UTF-8 с использованием 3-грамм
Query
Response
notILike
Добавленный в: v20.6.0 Проверяет, что строка не соответствует шаблону регистронезависимым образом. Шаблон может содержать специальные символы% и _ для сопоставления по SQL LIKE. Поддерживает необязательное предложение ESCAPE (см. like).
Синтаксис
haystack— Входная строка, в которой выполняется поиск.StringилиFixedStringpattern— Шаблон SQL LIKE для сопоставления.%соответствует любому количеству символов (включая ноль),_— ровно одному символу.Stringescape_character— Необязательная строка из одного символа, используемая в качестве символа экранирования вместо\. По умолчанию:\.String
1, если строка не соответствует шаблону при регистронезависимом сравнении, в противном случае — 0. UInt8
Примеры
Пример использования
Query
Response
notLike
Добавленный в: v1.1.0 Аналогичнаlike, но с отрицанием результата. Поддерживает необязательное предложение ESCAPE (см. like).
Синтаксис
haystack— Строка, в которой выполняется поиск.StringилиFixedStringpattern— ШаблонLIKEдля сопоставления.Stringescape_character— Необязательная строка из одного символа, используемая в качестве символа экранирования вместо\. По умолчанию:\.String
1, если строка не соответствует шаблону LIKE, иначе — 0. UInt8
Примеры
Пример использования
Query
Response
Query
Response
notMatch
Добавленный в: v26.8.0 Аналогичнаmatch, но инвертирует результат: проверяет, что строка не соответствует шаблону регулярного выражения.
Эта функция использует библиотеку регулярных выражений RE2. Поддерживаемый синтаксис см. в re2.
Альтернативный синтаксис оператора: haystack !~ pattern (в стиле PostgreSQL).
Синтаксис
haystack— Строка, в которой ищется шаблон.Stringpattern— Шаблон регулярного выражения. Может быть константой или поступать из столбца.String
0, если найдено совпадение с шаблоном, иначе — 1. UInt8
Примеры
Пример использования
Query
Response
notMatchCaseInsensitive
Добавленный в: v26.8.0 АналогичнаmatchCaseInsensitive, но инвертирует результат: проверяет, что строка регистронезависимо не соответствует шаблону регулярного выражения.
Эта функция использует библиотеку регулярных выражений RE2. Поддерживаемый синтаксис см. в re2.
Альтернативный синтаксис оператора: haystack !~* pattern (в стиле PostgreSQL).
Синтаксис
haystack— Строка, в которой ищется шаблон.Stringpattern— Шаблон регулярного выражения. Может быть константой или поступать из столбца.String
0, если найдено регистронезависимое совпадение с шаблоном, иначе — 1. UInt8
Примеры
Пример использования
Query
Response
position
Добавленный в: v1.1.0 Возвращает позицию (в байтах, начиная с 1) подстрокиneedle в строке haystack.
Если подстрока needle пустая, действуют следующие правила:
- если
start_posне указан: вернуть1 - если
start_pos = 0: вернуть1 - если
start_pos >= 1иstart_pos <= length(haystack) + 1: вернутьstart_pos - в противном случае: вернуть
0
locate, positionCaseInsensitive, positionUTF8 и positionCaseInsensitiveUTF8.
Синтаксис
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Искомая подстрока.Stringstart_pos— Позиция вhaystack(нумерация с 1), с которой начинается поиск. Необязательный параметр.UInt
0. UInt64
Примеры
Базовое использование
Query
Response
Query
Response
Query
Response
Query
Response
positionCaseInsensitive
Добавленный в: v1.1.0 Аналогposition, но регистронезависимый.
Синтаксис
instr
Аргументы
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Подстрока, которую нужно найти.Stringstart_pos— Необязательно. Позиция (нумерация начинается с 1) вhaystack, с которой начинается поиск.UInt*
0. UInt64
Примеры
Регистронезависимый поиск
Query
Response
positionCaseInsensitiveUTF8
Добавленный в: v1.1.0 КакpositionUTF8, но выполняет поиск без учета регистра.
Синтаксис
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Искомая подстрока.Stringstart_pos— Необязательно. Позиция (отсчёт с 1) вhaystack, с которой начинается поиск.UInt*
0. UInt64
Примеры
Регистронезависимый поиск UTF-8
Query
Response
positionUTF8
Добавленный в: v1.1.0 Аналогичноposition, но предполагает, что haystack и needle — строки в кодировке UTF-8.
Синтаксис
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Искомая подстрока.Stringstart_pos— Необязательно. Позиция вhaystack(нумерация с 1), с которой начинается поиск.UInt*
0. UInt64
Примеры
Подсчёт символов UTF-8
Query
Response