Функции для поиска в строках
Все функции в этом разделе по умолчанию выполняют поиск с учётом регистра. Поиск без учёта регистра обычно реализуется отдельными вариантами функций.
Поиск без учёта регистра следует правилам соответствия строчных и прописных букв английского языка. Например, заглавная буква i в английском языке — это I, тогда как в турецком языке — это İ; результаты для языков, отличных от английского, могут быть неожиданными.
Функции в этом разделе также предполагают, что строка, в которой выполняется поиск (в этом разделе она называется haystack), и искомая строка (называемая в этом разделе needle) представляют собой однобайтовый текст. Если это предположение
не выполняется, исключение не выбрасывается, а результаты не определены. Поиск по строкам в кодировке UTF-8 обычно реализуется отдельными
вариантами функций. Аналогично, если используется UTF-8-вариант функции, а входные строки не являются текстом в кодировке UTF-8, исключение не выбрасывается, а
результаты не определены. Обратите внимание, что автоматическая нормализация Unicode не выполняется; при необходимости вы можете использовать для этого функции
normalizeUTF8*().
Общие функции для работы со строками и функции для замены в строках описаны отдельно.
Документация ниже сгенерирована из системной таблицы system.functions.
countMatches
Впервые появилась в: v21.1
Возвращает количество совпадений регулярного выражения в строке.
Поведение этой функции зависит от версии ClickHouse:
- в версиях < v25.6 функция прекращает подсчет при первом пустом совпадении, даже если шаблон принимает пустое совпадение.
- в версиях >= 25.6 функция продолжает выполнение при возникновении пустого совпадения. Устаревшее поведение можно вернуть, используя настройку
count_matches_stop_at_empty_match = true;
Синтаксис
Аргументы
haystack— Строка, в которой осуществляется поиск.Stringpattern— Шаблон регулярного выражения.String
Возвращаемое значение
Возвращает количество найденных вхождений. UInt64
Примеры
Подсчёт последовательностей цифр
countMatchesCaseInsensitive
Добавлена в версии: v21.1
Аналог countMatches, но выполняет сравнение без учета регистра.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringpattern— шаблон регулярного выражения.const String
Возвращаемое значение
Возвращает количество найденных совпадений. UInt64
Примеры
Подсчёт без учёта регистра
countSubstrings
Добавлена в версии: v21.1
Возвращает, сколько раз подстрока needle встречается в строке haystack.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск. String или Enum. -needle— подстрока, которую нужно найти. String. -start_pos— позиция (нумерация с 1) вhaystack, с которой начинается поиск. UInt. Необязательный параметр.
Возвращаемое значение
Количество вхождений. UInt64
Примеры
Пример использования
С использованием аргумента start_pos
countSubstringsCaseInsensitive
Введена в версии v21.1
Аналог countSubstrings, но выполняет подсчёт без учёта регистра.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Подстрока, которую требуется найти.Stringstart_pos— Необязательный аргумент. Позиция (считая с 1) вhaystack, с которой начинается поиск.UInt*
Возвращаемое значение
Возвращает количество вхождений needle в haystack. UInt64
Примеры
Пример использования
С аргументом start_pos
countSubstringsCaseInsensitiveUTF8
Добавлена в: v21.1
Аналог countSubstrings, но выполняет подсчёт без учёта регистра и предполагает, что аргумент haystack является строкой в кодировке UTF-8.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.StringилиEnumneedle— подстрока, которую нужно найти.Stringstart_pos— необязательный параметр. Позиция (считая с 1) вhaystack, с которой начинается поиск.UInt*
Возвращаемое значение
Возвращает количество вхождений needle в haystack. UInt64
Примеры
Пример использования
С аргументом start_pos
extract
Добавлена в: v1.1
Извлекает первое совпадение регулярного выражения в строке. Если 'haystack' не соответствует 'pattern', возвращается пустая строка.
Эта функция использует библиотеку регулярных выражений RE2. См. re2 для поддерживаемого синтаксиса.
Если регулярное выражение содержит группы захвата (подшаблоны), функция использует первую группу захвата в качестве совпадения.
Синтаксис
Аргументы
haystack— Строка, из которой выполняется извлечение.Stringpattern— Регулярное выражение, как правило, содержащее группу захвата.const String
Возвращаемое значение
Возвращает извлечённый фрагмент в виде строки. String
Примеры
Извлечение домена из адреса электронной почты
Если совпадений нет, возвращается пустая строка.
extractAll
Добавлена в: v1.1
Как extract, но возвращает массив всех вхождений регулярного выражения в строке.
Если 'haystack' не соответствует регулярному выражению 'pattern', возвращается пустой массив.
Если регулярное выражение содержит группы захвата (подшаблоны), функция возвращает совпадения для первой группы захвата.
Синтаксис
Аргументы
haystack— Строка, из которой нужно извлечь фрагменты.Stringpattern— Регулярное выражение, при необходимости содержащее группы захвата.const String
Возвращаемое значение
Возвращает массив извлечённых фрагментов. Array(String)
Примеры
Извлечение всех чисел
Извлечение с использованием захватывающей группы
extractAllGroupsHorizontal
Добавлено в версии: v20.5
Находит все группы в строке с помощью указанного регулярного выражения и возвращает массив массивов, где каждый внутренний массив содержит все захватывания одной и той же группы, расположенные по номеру группы.
Синтаксис
Аргументы
s— Входная строка, из которой выполняется извлечение групп.StringилиFixedStringregexp— Регулярное выражение для сопоставления.const Stringилиconst FixedString
Возвращаемое значение
Возвращает массив массивов, где каждый внутренний массив содержит все захваченные подстроки одной группы захвата по всем совпадениям. Первый внутренний массив содержит все захваты из группы 1, второй — из группы 2 и т. д. Если совпадения не найдены, возвращается пустой массив. Array(Array(String))
Примеры
Пример использования
extractGroups
Введена в: v20.5
Извлекает все группы из непересекающихся подстрок, найденных по регулярному выражению.
Синтаксис
Аргументы
s— Входная строка, из которой выполняется извлечение.StringилиFixedStringregexp— Регулярное выражение. Константное значение.const Stringилиconst FixedString
Возвращаемое значение
Если функция находит хотя бы одну совпадающую группу, она возвращает столбец типа Array(Array(String)), упорядоченный по group_id (1 до N, где N — количество захватывающих групп в regexp). Если совпадающих групп нет, возвращается пустой массив. Array(Array(String))
Примеры
Пример использования
hasAllTokens
Добавлена в: v25.10
Аналогично hasAnyTokens, но возвращает 1, если все токены в строке или массиве needle совпадают со строкой input, и 0 в противном случае. Если input — это столбец, возвращаются все строки, удовлетворяющие этому условию.
Для столбца input должен быть определён текстовый индекс для оптимальной производительности.
Если текстовый индекс не определён, функция выполняет полное сканирование столбца, которое на порядки медленнее, чем поиск по индексу.
Перед поиском функция выполняет токенизацию
- аргумента
input(всегда) и - аргумента
needle(если он задан как String), используя токенизатор, указанный для текстового индекса. Если для столбца не определён текстовый индекс, вместо него используется токенизаторsplitByNonAlpha. Если аргументneedleимеет тип Array(String), каждый элемент массива рассматривается как токен — дополнительная токенизация не выполняется.
Дубликаты токенов игнорируются.
Например, needles = ['ClickHouse', 'ClickHouse'] обрабатывается так же, как ['ClickHouse'].
Синтаксис
Псевдонимы: hasAllToken
Аргументы
input— входной столбец.StringилиFixedStringилиArray(String)илиArray(FixedString)needles— токены, которые требуется найти.StringилиArray(String)
Возвращаемое значение
Возвращает 1, если все токены найдены, иначе — 0. UInt8
Примеры
Пример использования для строкового столбца
Укажите подстроки, которые нужно искать КАК ЕСТЬ (без токенизации) в массиве
Генерация искомых подстрок с помощью функции tokens
Примеры использования столбцов типов Array и Map
Пример со столбцом типа массив
Пример с функцией mapKeys
Пример использования mapValues
hasAnyTokens
Добавлено в: v25.10
Возвращает 1, если хотя бы один токен в строке или массиве needle совпадает со строкой input, и 0 в противном случае. Если input — это столбец, возвращает все строки, удовлетворяющие этому условию.
Для столбца input должен быть определён текстовый индекс для оптимальной производительности.
Если текстовый индекс не определён, функция выполняет полное сканирование столбца, что на порядки медленнее, чем поиск по индексу.
Перед поиском функция выполняет токенизацию
- аргумента
input(всегда) и - аргумента
needle(если он задан как String), используя токенизатор, указанный для текстового индекса. Если для столбца не определён текстовый индекс, вместо него используется токенизаторsplitByNonAlpha. Если аргументneedleимеет тип Array(String), каждый элемент массива рассматривается как отдельный токен — дополнительная токенизация не выполняется.
Дублирующиеся токены игнорируются. Например, ['ClickHouse', 'ClickHouse'] обрабатывается так же, как ['ClickHouse'].
Синтаксис
Псевдонимы: hasAnyToken
Аргументы
input— Входной столбец.StringилиFixedStringилиArray(String)илиArray(FixedString)needles— Токены, которые нужно найти.StringилиArray(String)
Возвращаемое значение
Возвращает 1, если было найдено хотя бы одно совпадение. 0 в противном случае. UInt8
Примеры
Пример использования для строкового столбца
Укажите строки, которые следует искать «как есть» (без токенизации) в массиве
Сгенерируйте искомые токены с помощью функции tokens
Примеры использования столбцов типов Array и Map
Пример со столбцом массива
Пример с функцией mapKeys
Пример использования mapValues
hasSubsequence
Впервые появилась в: v23.7
Проверяет, является ли needle подпоследовательностью haystack.
Подпоследовательность строки — это последовательность, которую можно получить из другой строки путём удаления некоторых (или ни одного) символов без изменения порядка оставшихся символов.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск подпоследовательности.Stringneedle— подпоследовательность, которую нужно найти.String
Возвращаемое значение
Возвращает 1, если needle является подпоследовательностью haystack, и 0 в противном случае. UInt8
Примеры
Базовая проверка наличия подпоследовательности
Подпоследовательность не найдена
hasSubsequenceCaseInsensitive
Добавлена в версии: v23.7
Аналог hasSubsequence, но выполняет поиск без учета регистра.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle— подпоследовательность, которую нужно найти.String
Возвращаемое значение
Возвращает 1, если needle является подпоследовательностью haystack, и 0 в противном случае. UInt8
Примеры
Пример использования
hasSubsequenceCaseInsensitiveUTF8
Появилась в версии: v23.7
Аналог функции hasSubsequenceUTF8, но выполняет поиск без учета регистра.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— строка-подпоследовательность в кодировке UTF-8, которую нужно найти.String
Возвращаемое значение
Возвращает 1, если needle является подпоследовательностью строки haystack, иначе 0. UInt8
Примеры
Пример использования
hasSubsequenceUTF8
Добавлена в версии: v23.7
Аналог функции hasSubsequence, но предполагает, что haystack и needle — строки в кодировке UTF-8.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle— подпоследовательность, которую нужно найти.String
Возвращаемое значение
Возвращает 1, если needle является подпоследовательностью haystack, в противном случае — 0. UInt8
Примеры
Пример использования
Подпоследовательность без совпадений
hasToken
Впервые появилась в: v20.1
Проверяет, присутствует ли заданный токен в строке.
Использует splitByNonAlpha в качестве токенизатора, то есть токен определяется как максимально длинная подпоследовательность идущих подряд символов [0-9A-Za-z_] (цифры, ASCII-символы и символ подчёркивания).
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringtoken— Токен для поиска.const String
Возвращаемое значение
Возвращает 1, если токен найден, иначе 0. UInt8
Примеры
Поиск токена
hasTokenCaseInsensitive
Добавлена в версии: v
Выполняет регистронезависимый поиск значения needle в haystack с использованием индекса tokenbf_v1.
Синтаксис
Аргументы
- Отсутствуют.
Возвращаемое значение
Примеры
hasTokenCaseInsensitiveOrNull
Введена в версии: v
Выполняет поиск needle в haystack без учета регистра с использованием индекса tokenbf_v1. Возвращает null, если needle задано некорректно.
Синтаксис
Аргументы
- Отсутствуют.
Возвращаемое значение
Примеры
hasTokenOrNull
Впервые появился в версии v20.1
Аналог hasToken, но возвращает null, если токен имеет неверный формат.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск. Должна быть константной.Stringtoken— Токен для поиска.const String
Возвращаемое значение
Возвращает 1, если токен найден, 0 — в противном случае, null — если токен имеет неверный формат. Nullable(UInt8)
Примеры
Пример использования
ilike
Добавлено в: v20.6
Аналог like, но выполняет регистронезависимый поиск.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.StringилиFixedStringpattern— шаблон LIKE для поиска совпадений.String
Возвращаемое значение
Возвращает 1, если строка соответствует шаблону LIKE (без учета регистра), иначе 0. UInt8
Примеры
Пример использования
like
Введено в: v1.1
Возвращает, соответствует ли строка haystack LIKE‑выражению pattern.
LIKE‑выражение может содержать обычные символы и следующие метасимволы:
%обозначает произвольное количество произвольных символов (включая ноль символов)._обозначает один произвольный символ.\используется для экранирования литералов%,_и\.
Сопоставление выполняется в кодировке UTF-8, например, _ соответствует кодовой точке Unicode ¥, которая в UTF-8 представлена двумя байтами.
Если строка haystack или LIKE‑выражение не являются корректной строкой в кодировке UTF-8, поведение не определено.
Автоматическая нормализация Unicode не выполняется; для этого вы можете использовать функции normalizeUTF8*.
Чтобы сопоставлять литеральные %, _ и \ (которые являются метасимволами LIKE), добавьте перед ними обратную косую черту: \%, \_ и \\.
Обратная косая черта теряет своё специальное значение (т. е. интерпретируется буквально), если она стоит перед символом, отличным от %, _ или \.
ClickHouse требует также экранировать обратные косые черты в строках, поэтому фактически вам нужно написать \\%, \\_ и \\\\.
Для LIKE‑выражений вида %needle% функция работает так же быстро, как функция position.
Все остальные выражения LIKE внутренне преобразуются в регулярное выражение и выполняются с производительностью, аналогичной функции match.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.StringилиFixedStringpattern— шаблонLIKEдля сравнения. Может содержать%(соответствует любому количеству символов),_(соответствует одному символу) и\для экранирования.String
Возвращаемое значение
Возвращает 1, если строка соответствует шаблону LIKE, в противном случае — 0. UInt8
Примеры
Пример использования
Подстановочный символ для одного символа
Отсутствие совпадения с шаблоном
locate
Появилась в версии v18.16
Аналогична 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— Необязательный параметр. Позиция (начиная с 1) вhaystack, с которой начинается поиск.UInt
Возвращаемое значение
Возвращает начальную позицию в байтах, считая от 1, если подстрока найдена, или 0, если подстрока не найдена. UInt64
Примеры
Базовое использование
match
Добавлена в: v1.1
Проверяет, соответствует ли указанная строка заданному шаблону регулярного выражения.
Эта функция использует библиотеку регулярных выражений RE2. Поддерживаемый синтаксис смотрите в re2.
Сопоставление выполняется при предположении кодировки UTF-8, например, ¥ внутренне занимает два байта, но при сопоставлении рассматривается как один кодпоинт.
Регулярное выражение не должно содержать нулевых байтов.
Если haystack или шаблон не являются корректным UTF-8, поведение не определено.
В отличие от поведения по умолчанию re2, . сопоставляет также символы перевода строки. Чтобы отключить это, добавьте к шаблону префикс (?-s).
Шаблон автоматически «якорится» с обеих сторон (как если бы шаблон начинался с ^ и заканчивался на $).
Если вам нужно лишь находить подстроки, вы можете использовать функции like или position — они работают значительно быстрее, чем эта функция.
Альтернативный синтаксис оператора: haystack REGEXP pattern.
Синтаксис
Псевдонимы: REGEXP_MATCHES
Аргументы
haystack— Строка, в которой выполняется поиск по шаблону.Stringpattern— Шаблон регулярного выражения.const String
Возвращаемое значение
Возвращает 1, если строка соответствует шаблону, и 0 в противном случае. UInt8
Примеры
Базовое сопоставление с шаблоном
Нет совпадений с шаблоном
multiFuzzyMatchAllIndices
Добавлена в: v20.1
Аналог multiFuzzyMatchAny, но возвращает массив всех индексов (в любом порядке), для которых соответствующая строка совпадает с «стогом сена» (haystack) в пределах заданного редакционного расстояния.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringdistance— максимальное редакционное расстояние для нечеткого сопоставления.UInt8pattern— массив шаблонов для сопоставления.Array(String)
Возвращаемое значение
Возвращает массив всех индексов (начиная с 1) шаблонов, которые совпадают со строкой haystack в пределах указанного редакционного расстояния в произвольном порядке. Возвращает пустой массив, если совпадений не найдено. Array(UInt64)
Примеры
Пример использования
multiFuzzyMatchAny
Добавлена в: v20.1
Как multiMatchAny, но возвращает 1, если любой шаблон совпадает с искомой строкой с учётом фиксированного редакционного расстояния.
Эта функция опирается на экспериментальную возможность библиотеки hyperscan и может работать медленно в некоторых крайних случаях.
Производительность зависит от значения редакционного расстояния и используемых шаблонов, но всегда ниже по сравнению с вариантами без нечеткого сопоставления.
Семейство функций multiFuzzyMatch*() не поддерживает регулярные выражения в UTF-8 (обрабатывает их как последовательность байт) из‑за ограничений hyperscan.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringdistance— Максимальное редакционное расстояние для нечёткого поиска.UInt8pattern— Необязательный аргумент. Массив шаблонов для сопоставления.Array(String)
Возвращаемое значение
Возвращает 1, если хотя бы один шаблон совпадает со строкой haystack при указанном редакционном расстоянии, в противном случае — 0. UInt8
Примеры
Пример использования
multiFuzzyMatchAnyIndex
Введена в версии: v20.1
Аналог multiFuzzyMatchAny, но возвращает любой индекс совпадения в строке, по которой ведётся поиск, в пределах заданного константного редакционного расстояния.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringdistance— максимальное редакционное расстояние для нечеткого сопоставления.UInt8pattern— массив шаблонов для сопоставления.Array(String)
Возвращаемое значение
Возвращает индекс (начиная с 1) шаблона, совпадающего со строкой haystack в пределах указанного редакционного расстояния, иначе 0. UInt64
Примеры
Пример использования
multiMatchAllIndices
Введена в версии v20.1
Аналог multiMatchAny, но возвращает массив всех индексов, которые совпадают с haystack в любом порядке.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringpattern— регулярное выражение (шаблон) для сопоставления.String
Возвращаемое значение
Массив всех индексов (начиная с 1), соответствующих совпадениям в haystack, в любом порядке. Возвращает пустой массив, если совпадения не найдены. Array(UInt64)
Примеры
Пример использования
multiMatchAny
Добавлена в версии: v20.1
Проверяет, соответствует ли хотя бы один из нескольких шаблонов регулярных выражений строке ("стогу сена").
Если вам нужно только искать несколько подстрок в строке, вместо этого можно использовать функцию multiSearchAny — она работает значительно быстрее, чем эта функция.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск по шаблонам.Stringpattern1[, pattern2, ...]— массив из одного или нескольких шаблонов регулярных выражений.Array(String)
Возвращаемое значение
Возвращает 1, если есть совпадение с любым шаблоном, иначе 0. UInt8
Примеры
Сопоставление нескольких шаблонов
Нет совпадений с шаблонами
multiMatchAnyIndex
Введена в версии v20.1
Аналог multiMatchAny, но возвращает любой индекс шаблона, который совпадает с исходной строкой.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringpattern— регулярные выражения, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает индекс (начиная с 1) первого шаблона, для которого найдено совпадение, или 0, если совпадений не найдено. UInt64
Примеры
Пример использования
multiSearchAllPositions
Впервые представлена в: v20.1
Аналог функции position, но возвращает массив позиций (в байтах, начиная с 1) для нескольких подстрок needle в строке haystack.
Все функции multiSearch*() поддерживают не более 2^8 подстрок needle.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— Массив из одной или более подстрок для поиска.Array(String)
Возвращаемое значение
Возвращает массив начальных позиций подстрок в байтах (нумерация с 1), если подстрока была найдена, и 0, если подстрока не была найдена. Array(UInt64)
Примеры
Поиск нескольких подстрок
multiSearchAllPositionsCaseInsensitive
Впервые добавлена в: v20.1
Аналог multiSearchAllPositions, но не учитывает регистр.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— массив из одной или нескольких подстрок, по которым ведется поиск.Array(String)
Возвращаемое значение
Возвращает массив начальных позиций в байтах, начиная с 1 (если подстрока была найдена), либо 0, если подстрока не найдена. Array(UInt64)
Примеры
Множественный поиск без учета регистра
multiSearchAllPositionsCaseInsensitiveUTF8
Появилась в версии v20.1
Аналог multiSearchAllPositionsUTF8, но игнорирует регистр.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— подстроки в кодировке UTF-8, по которым выполняется поиск.Array(String)
Возвращаемое значение
Массив позиций начала подстроки в байтах, нумерация с 1 (если подстрока найдена). Возвращает 0, если подстрока не найдена. Array
Примеры
Регистронезависимый поиск в UTF-8
multiSearchAllPositionsUTF8
Впервые появилось в: v20.1
Аналог multiSearchAllPositions, но предполагает, что haystack и подстроки needle — это строки в кодировке UTF-8.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle1[, needle2, ...]— массив подстрок в кодировке UTF-8, которые нужно найти.Array(String)
Возвращаемое значение
Возвращает массив начальных позиций в байтах, нумерация с 1 (если подстрока найдена), либо 0, если подстрока не найдена. Array
Примеры
Множественный поиск в строках UTF-8
multiSearchAny
Добавлено в: v20.1
Проверяет, совпадает ли хотя бы одна из строк needle со строкой haystack.
Функции multiSearchAnyCaseInsensitive, multiSearchAnyUTF8 и multiSearchAnyCaseInsensitiveUTF8 предоставляют варианты этой функции, работающие без учета регистра и/или с кодировкой UTF-8.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— массив искомых подстрок.Array(String)
Возвращаемое значение
Возвращает 1, если найдено хотя бы одно совпадение, иначе 0, если совпадений нет. UInt8
Примеры
Поиск при наличии хотя бы одного совпадения
multiSearchAnyCaseInsensitive
Впервые появилась в: v20.1
Аналог multiSearchAny, но выполняет поиск без учета регистра.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle— подстроки, которые нужно найти.Array(String)
Возвращаемое значение
Возвращает 1, если найдено хотя бы одно совпадение без учета регистра, в противном случае — 0. UInt8
Примеры
Поиск без учета регистра
multiSearchAnyCaseInsensitiveUTF8
Добавлена в версии: v20.1
Аналог multiSearchAnyUTF8, но игнорирует регистр.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— подстроки в кодировке UTF-8, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает 1, если найдено хотя бы одно совпадение без учета регистра, в противном случае — 0. UInt8
Примеры
Для строки UTF-8 'Здравствуйте' проверьте, присутствует ли символ 'з' (в нижнем регистре)
multiSearchAnyUTF8
Введена в версии: v20.1
Аналог функции multiSearchAny, но предполагает, что haystack и подстроки needle являются строками в кодировке UTF-8.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— подстроки в кодировке UTF-8, которые нужно найти.Array(String)
Возвращаемое значение
Возвращает 1, если найдено как минимум одно совпадение, в противном случае — 0. UInt8
Примеры
Для строки '你好,世界' ('Hello, world') в кодировке UTF-8 проверьте, есть ли в строке символы 你 или 界
multiSearchFirstIndex
Появилась в: v20.1
Выполняет поиск нескольких строк-образцов в исходной строке (с учётом регистра) и возвращает индекс (начиная с 1) первого найденного образца.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringneedles— Массив строк, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает индекс (позицию в массиве needles), начинающийся с 1, первой строки из needles, найденной в haystack. Возвращает 0, если ни одна строка не найдена. Поиск выполняется с учётом регистра. UInt64
Примеры
Пример использования
Регистрозависимое поведение
Совпадений не найдено
multiSearchFirstIndexCaseInsensitive
Впервые представлена в: v20.1
Возвращает индекс i (начиная с 1) самой левой найденной подстроки needle_i в строке haystack, и 0 в противном случае.
Игнорирует регистр.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle— подстроки для поиска.Array(String)
Возвращаемое значение
Возвращает индекс (начиная с 1) самого левого найденного вхождения needle. В противном случае — 0, если совпадения не было. UInt8
Примеры
Пример использования
multiSearchFirstIndexCaseInsensitiveUTF8
Добавлено в: v20.1
Выполняет поиск нескольких подстрок-образцов в строке‑«стоге сена» без учета регистра с поддержкой кодировки UTF-8 и возвращает индекс первого найденного образца (нумерация с 1).
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedles— массив строк для поиска.Array(String)
Возвращаемое значение
Возвращает индекс, начинающийся с 1 (позицию в массиве needles) первой строки, найденной в haystack. Возвращает 0, если ни одна из строк не найдена. Поиск нечувствителен к регистру и учитывает кодировку символов UTF-8. UInt64
Примеры
Пример использования
Учет регистра в UTF-8
Совпадений не найдено
multiSearchFirstIndexUTF8
Появилась в версии: v20.1
Возвращает индекс i (начиная с 1) самого левого вхождения needle_i в строке haystack или 0, если совпадений нет.
Предполагается, что haystack и needle — строки в кодировке UTF-8.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— массив подстрок в кодировке UTF-8, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает индекс (начиная с 1) самой левой найденной подстроки. В противном случае возвращает 0, если совпадений не было. UInt8
Примеры
Пример использования
multiSearchFirstPosition
Введена в: v20.1
Аналог функции position, но возвращает смещение от начала строки haystack до самого левого вхождения любой из нескольких строк needle.
Функции multiSearchFirstPositionCaseInsensitive, multiSearchFirstPositionUTF8 и multiSearchFirstPositionCaseInsensitiveUTF8 предоставляют регистронезависимые и/или UTF-8-варианты этой функции.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle1[, needle2, ...]— массив из одной или более подстрок, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает смещение от начала строки haystack, соответствующее любой из подстрок needle. В случае отсутствия совпадений возвращает 0. UInt64
Примеры
Поиск позиции первого вхождения
multiSearchFirstPositionCaseInsensitive
Впервые появилась в версии v20.1
Аналог multiSearchFirstPosition, но без учета регистра.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringneedle— Массив подстрок, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает наименьшее (самое левое) смещение в строке haystack, где найдено совпадение с любой из строк needle. Возвращает 0, если совпадений не было. UInt64
Примеры
Первое вхождение без учета регистра
multiSearchFirstPositionCaseInsensitiveUTF8
Впервые появилась в версии v20.1
Аналог multiSearchFirstPosition, но предполагает, что haystack и needle — строки в кодировке UTF-8, и игнорирует регистр.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8, в которой выполняется поиск.Stringneedle— массив подстрок в кодировке UTF-8, по которым выполняется поиск.Array(String)
Возвращаемое значение
Возвращает самую левую позицию в строке haystack, которая совпадает с любой из строк needle, без учета регистра. Возвращает 0, если совпадение не найдено. UInt64
Примеры
Найти самую левую позицию в строке UTF-8 'Здравствуй, мир' ('Hello, world'), которая совпадает с любой из указанных подстрок
multiSearchFirstPositionUTF8
Появилась в версии: v20.1
Аналог multiSearchFirstPosition, но предполагает, что haystack и needle — строки в кодировке UTF-8.
Синтаксис
Аргументы
haystack— строка в UTF-8, в которой выполняется поиск.Stringneedle— массив подстрок в UTF-8, по которым выполняется поиск.Array(String)
Возвращаемое значение
Наименьшее (самое левое) смещение в строке haystack, в котором есть совпадение с любой из строк needle. Возвращает 0, если совпадений нет. UInt64
Примеры
Найдите наименьшее (самое левое) смещение в строке UTF-8 'Здравствуй, мир' ('Hello, world'), которое совпадает с любой из заданных подстрок
ngramDistance
Впервые появилась в версии v20.1
Вычисляет расстояние по 4-граммам между двумя строками. Для этого считает симметрическую разность между двумя мультимножествами 4-грамм и нормализует её по сумме их мощностей. Чем меньше возвращаемое значение, тем более похожи строки.
Для поиска без учета регистра и/или в формате UTF8 используйте функции ngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает число типа Float32 в диапазоне от 0 до 1. Чем меньше возвращаемое значение, тем более похожи строки. Float32
Примеры
Вычисление расстояния на основе 4-грамм
ngramDistanceCaseInsensitive
Впервые представлена в: v20.1
Предоставляет регистронезависимый вариант ngramDistance.
Вычисляет расстояние на основе 4-грамм между двумя строками, игнорируя регистр.
Чем меньше возвращаемое значение, тем более похожи строки.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает число с плавающей запятой типа Float32 в диапазоне от 0 до 1. Float32
Примеры
Регистронезависимое 4-граммное расстояние
ngramDistanceCaseInsensitiveUTF8
Впервые представлена в: v20.1
Предоставляет регистронезависимый вариант UTF-8 функции ngramDistance.
Предполагается, что строки needle и haystack закодированы в UTF-8, при этом регистр игнорируется.
Вычисляет расстояние по 3-граммам между двумя строками в кодировке UTF-8 с игнорированием регистра.
Чем меньше возвращаемое значение, тем более похожи строки.
Синтаксис
Аргументы
haystack— первая сравниваемая строка в кодировке UTF-8.Stringneedle— вторая сравниваемая строка в кодировке UTF-8.String
Возвращаемое значение
Возвращает число типа Float32 в диапазоне от 0 до 1. Float32
Примеры
Регистронезависимое расстояние 3-грамм в UTF-8
ngramDistanceUTF8
Введена в версии v20.1
Предоставляет вариант функции ngramDistance для строк в кодировке UTF‑8.
Предполагается, что строки needle и haystack закодированы в UTF‑8.
Вычисляет расстояние по 3-граммам между двумя строками UTF‑8.
Чем меньше возвращаемое значение, тем более похожи строки.
Синтаксис
Аргументы
haystack— первая сравниваемая строка в кодировке UTF-8.Stringneedle— вторая сравниваемая строка в кодировке UTF-8.String
Возвращаемое значение
Возвращает число типа Float32 в диапазоне от 0 до 1. Float32
Примеры
3-граммное расстояние UTF-8
ngramSearch
Введена в версии v20.1
Проверяет, что расстояние по 4-граммам между двумя строками меньше либо равно заданному порогу.
Для нечувствительного к регистру поиска и/или работы с UTF-8 используйте функции ngramSearchCaseInsensitive, ngramSearchUTF8, ngramSearchCaseInsensitiveUTF8.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает 1, если расстояние по 4-граммам между строками меньше либо равно порогу (1.0 по умолчанию), иначе 0. UInt8
Примеры
Поиск с использованием 4-грамм
ngramSearchCaseInsensitive
Добавлена в версии: v20.1
Предоставляет регистронезависимый вариант ngramSearch.
Вычисляет несимметричную разницу между строкой-образцом и строкой-источником, то есть количество n-грамм из образца минус общее количество общих n-грамм, нормированное по количеству n-грамм в образце.
Проверяет, что 4-граммное расстояние между двумя строками меньше либо равно заданному порогу, игнорируя регистр.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает 1, если расстояние по 4-граммам между строками меньше или равно пороговому значению (1.0 по умолчанию), иначе 0. UInt8
Примеры
Поиск без учета регистра с использованием 4-грамм
ngramSearchCaseInsensitiveUTF8
Добавлена в версии: v20.1
Предоставляет регистронезависимый UTF-8-вариант ngramSearch.
Предполагается, что haystack и needle — это строки в кодировке UTF-8, и регистр в них игнорируется.
Проверяет, что расстояние по 3-граммам между двумя строками UTF-8 меньше либо равно заданному порогу, игнорируя регистр.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8 для сравнения.Stringneedle— строка в кодировке UTF-8 для сравнения.String
Возвращаемое значение
Возвращает 1, если расстояние на основе 3-грамм между строками меньше или равно пороговому значению (1.0 по умолчанию), и 0 в противном случае. UInt8
Примеры
Нечувствительный к регистру поиск в строках UTF-8 с использованием 3-грамм
ngramSearchUTF8
Появилась в: v20.1
Предоставляет вариант функции ngramSearch для строк в кодировке UTF-8.
Предполагает, что haystack и needle — строки в кодировке UTF-8.
Проверяет, что расстояние по 3-граммам между двумя строками UTF-8 меньше или равно заданному порогу.
Синтаксис
Аргументы
haystack— строка в кодировке UTF-8 для сравнения.Stringneedle— строка в кодировке UTF-8 для сравнения.String
Возвращаемое значение
Возвращает 1, если расстояние по 3-граммам между строками меньше либо равно порогу (1.0 по умолчанию), иначе 0. UInt8
Примеры
Поиск в UTF-8 с использованием 3-грамм
notILike
Появилась в версии: v20.6
Проверяет, что строка не соответствует шаблону без учета регистра. Шаблон может содержать специальные символы % и _ для сопоставления в стиле SQL LIKE.
Синтаксис
Аргументы
haystack— входная строка, в которой выполняется поиск.StringилиFixedStringpattern— шаблон SQLLIKEдля сравнения.%соответствует любому количеству символов (включая ноль),_соответствует ровно одному символу.String
Возвращаемое значение
Возвращает 1, если строка не соответствует шаблону (сравнение без учета регистра), иначе 0. UInt8
Примеры
Пример использования
notLike
Введён в: v1.1
Похож на like, но возвращает противоположный результат.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.StringилиFixedStringpattern— шаблонLIKEдля проверки соответствия.String
Возвращаемое значение
Возвращает 1, если строка не соответствует шаблону LIKE, в противном случае — 0. UInt8
Примеры
Пример использования
Отсутствие совпадения с шаблоном
position
Введена в версии: v1.1
Возвращает позицию (в байтах, начиная с 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— Позиция (нумерация с 1) вhaystack, с которой начинается поиск. Необязательный параметр.UInt
Возвращаемое значение
Возвращает начальную позицию в байтах, считая с 1, если подстрока найдена; в противном случае — 0, если подстрока не найдена. UInt64
Примеры
Базовое использование
С аргументом start_pos
Синтаксис «иголка IN стоге сена»
Пустая подстрока-шаблон
positionCaseInsensitive
Добавлена в версии: v1.1
Аналог функции position, но без учета регистра.
Синтаксис
Псевдонимы: instr
Аргументы
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Подстрока, которую нужно найти.Stringstart_pos— Необязательный параметр. Позиция (счёт с 1) вhaystack, с которой начинается поиск.UInt*
Возвращаемое значение
Возвращает начальную позицию в байтах, считая с 1, если подстрока найдена, и 0, если подстрока не найдена. UInt64
Примеры
Поиск без учёта регистра
positionCaseInsensitiveUTF8
Введена в версии v1.1
Аналог positionUTF8, но выполняет поиск без учета регистра.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Подстрока, которую нужно найти.Stringstart_pos— Необязательный параметр. Позиция (начиная с 1) вhaystack, с которой начинается поиск.UInt*
Возвращаемое значение
Возвращает начальную позицию (в байтах, начиная с 1), если подстрока была найдена, в противном случае — 0. UInt64
Примеры
Регистронезависимый поиск в UTF-8
positionUTF8
Появилась в версии: v1.1
Аналог функции position, но предполагается, что haystack и needle — строки в кодировке UTF-8.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.StringилиEnumneedle— Подстрока, которую нужно найти.Stringstart_pos— Необязательный параметр. Позиция (нумерация с 1) вhaystack, с которой начинается поиск.UInt*
Возвращаемое значение
Возвращает начальную позицию подстроки в байтах (нумерация с 1), если подстрока найдена, в противном случае — 0. UInt64
Примеры
Подсчёт символов в кодировке UTF-8