Функции для поиска в строках
Все функции в этом разделе по умолчанию выполняют поиск с учетом регистра. Поиск без учета регистра, как правило, реализован отдельными вариантами функций.
Поиск без учета регистра следует правилам соответствия строчных и заглавных букв английского языка. Например, заглавная буква 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
Примеры
Извлечение домена из email-адреса
Если совпадений нет, возвращает пустую строку
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— токены, которые нужно найти. Не более 64 токенов.StringилиArray(String)
Возвращаемое значение
Возвращает 1, если все искомые элементы найдены. В противном случае — 0. UInt8
Примеры
Пример использования для столбца типа String
Укажите искомые подстроки в массиве КАК ЕСТЬ (без токенизации)
Генерация искомых значений с помощью функции 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— Токены для поиска. Поддерживается не более чем 64 токена.StringилиArray(String)
Возвращаемое значение
Возвращает 1, если было найдено хотя бы одно совпадение, иначе 0. UInt8
Примеры
Пример использования для строкового столбца
Укажите значения для поиска КАК ЕСТЬ (без разбиения на токены) в массиве
Сгенерируйте подстроки (needles) с помощью функции 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
Проверяет, присутствует ли заданный токен в строке.
Токен определяется как максимально длинная подпоследовательность подряд идущих символов [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 и needle, расположенными в обратном порядке.
Поведение этой функции зависит от версии 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, например, ¥ внутренне использует два байта, но при сопоставлении рассматривается как одна кодовая точка.
Регулярное выражение не должно содержать NULL-байты.
Если 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, если любой шаблон совпадает с haystack при заданном постоянном редакционном расстоянии.
Эта функция использует экспериментальную функциональность библиотеки 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
Проверяет, совпадает ли хотя бы одна из нескольких строк-шаблонов с исходной строкой.
Функции 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
Примеры
Для строки в кодировке UTF-8 '你好,世界' ('Hello, world') проверьте, есть ли в строке символы 你 или 界
multiSearchFirstIndex
Впервые появилась в: v20.1
Выполняет поиск нескольких подстрок в исходной строке (с учётом регистра) и возвращает индекс (нумерация с 1) первой найденной подстроки.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringneedles— Массив строк для поиска.Array(String)
Возвращаемое значение
Возвращает индекс, начинающийся с 1 (позицию в массиве needles) первой строки из needles, найденной в haystack. Возвращает 0, если ни одна из строк из needles не найдена. Поиск чувствителен к регистру. 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) первой строки из 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
Предоставляет UTF-8-вариант функции ngramDistance.
Предполагается, что строки 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.
Вычисляет несимметричную разность между строкой-образцом (needle) и строкой, в которой выполняется поиск (haystack), то есть количество n-грамм из образца минус количество общих n-грамм, нормированное по количеству n-грамм в образце.
Проверяет, что расстояние по 4-граммам между двумя строками меньше либо равно заданному порогу, игнорируя регистр.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает 1, если 4-граммное расстояние между строками меньше либо равно порогу (1.0 по умолчанию), иначе 0. UInt8
Примеры
Поиск без учета регистра с использованием 4-грамм
ngramSearchCaseInsensitiveUTF8
Добавлена в версии: 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-грамм
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— шаблон для оператора SQL LIKE. Символ%соответствует любому количеству символов (включая ноль),_— ровно одному символу.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
Синтаксис needle IN haystack
Пустая подстрока-образец
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