Функции для поиска в строках
Все функции в этом разделе по умолчанию выполняют поиск с учётом регистра. Поиск без учёта регистра обычно реализован в отдельных вариантах функций.
Поиск без учёта регистра следует правилам соответствия строчных и прописных букв английского языка. Например, прописная буква для 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 — количество захватывающих групп в регулярном выражении). Если совпадающих групп нет, возвращается пустой массив. 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
Примеры
Пример использования для строкового столбца
Укажите подстроки для поиска по точному совпадению (без токенизации) в массиве
Сгенерируйте подстроки с помощью функции tokens
Примеры использования столбцов типов Array и Map
Пример со столбцом типа массив
Пример использования mapKeys
Пример с mapValues
hasAnyTokens
Добавлена в: v25.10
Возвращает 1, если хотя бы один токен в строке или массиве needle совпадает со строкой input, и 0 в противном случае. Если input — это столбец, возвращает все строки, которые удовлетворяют этому условию.
Для столбца input должен быть определён текстовый индекс для оптимальной производительности.
Если текстовый индекс не определён, функция выполняет полное сканирование столбца (brute-force), которое на порядки медленнее поиска по индексу.
Перед поиском функция выполняет токенизацию:
- аргумента
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
Примеры
Пример использования для строкового столбца
Указать значения для поиска в неизменном виде (без токенизации) в массиве
Сгенерируйте искомые строки с помощью функции 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, но предполагает, что и исходная строка, и образец закодированы в UTF-8.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle— подпоследовательность, которую нужно найти.String
Возвращаемое значение
Возвращает 1, если needle является подпоследовательностью haystack, иначе 0. UInt8
Примеры
Пример использования
Несовпадающая подпоследовательность
hasToken
Появилась в версии: v20.1
Проверяет, присутствует ли указанный токен в строке (haystack).
Токен определяется как максимально возможная последовательность идущих подряд символов [0-9A-Za-z_], то есть цифр, ASCII‑букв и символа подчёркивания.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringtoken— Искомый токен.const String
Возвращаемое значение
Возвращает 1, если токен найден, в противном случае — 0. UInt8
Примеры
Поиск токена
hasTokenCaseInsensitive
Впервые появилась в: v
Выполняет регистронезависимый поиск значения needle в haystack с использованием индекса tokenbf_v1.
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Примеры
hasTokenCaseInsensitiveOrNull
Введена в версии: v
Выполняет поиск подстроки в строке без учета регистра с использованием индекса tokenbf_v1. Возвращает null, если подстрока имеет некорректный формат.
Синтаксис
Аргументы
- Нет аргументов.
Возвращаемое значение
Примеры
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, например, ¥ внутренне использует два байта, но при сопоставлении рассматривается как один кодпоинт.
Регулярное выражение не должно содержать байтов 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, если любой из шаблонов совпадает со строкой с учётом заданного редакционного расстояния.
Эта функция использует экспериментальную возможность библиотеки 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
Примеры
Для строки '你好,世界' ('Hello, world') в кодировке UTF-8 проверьте, есть ли в строке символы 你 или 界
multiSearchFirstIndex
Добавлено в: v20.1
Выполняет поиск нескольких строк-образцов в строке-«стоге сена» (с учетом регистра) и возвращает индекс первого найденного образца, начиная с 1.
Синтаксис
Аргументы
haystack— Строка, в которой выполняется поиск.Stringneedles— Массив строк для поиска.Array(String)
Возвращаемое значение
Возвращает индекс, начинающийся с 1 (позицию в массиве needles) первой найденной строки в haystack. Возвращает 0, если ни одна из строк не найдена. Поиск чувствителен к регистру. UInt64
Примеры
Пример использования
Чувствительность к регистру
Совпадений не найдено
multiSearchFirstIndexCaseInsensitive
Введено в: v20.1
Возвращает индекс i (начиная с 1) первой найденной слева подстроки needle_i в строке haystack и 0 в противном случае.
Игнорирует регистр.
Синтаксис
Аргументы
haystack— строка, в которой выполняется поиск.Stringneedle— подстроки для поиска.Array(String)
Возвращаемое значение
Возвращает индекс (начиная с 1) самой левой найденной подстроки. В противном случае — 0, если совпадений нет. UInt8
Примеры
Пример использования
multiSearchFirstIndexCaseInsensitiveUTF8
Впервые появилась в: v20.1
Выполняет поиск нескольких подстрок (needle) в строке (haystack) без учета регистра с поддержкой кодировки 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) самой левой найденной подстроки из массива needle. В противном случае — 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-грамм и нормализует её, деля на сумму их мощностей. Чем меньше возвращаемое значение, тем более похожи строки.
Для поиска без учёта регистра и/или в кодировке UTF-8 используйте функции ngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает число типа Float32 в диапазоне от 0 до 1. Чем меньше возвращаемое значение, тем более похожи строки. Float32
Примеры
Вычисление 4-граммного расстояния
ngramDistanceCaseInsensitive
Введена в версии: v20.1
Предоставляет регистронезависимый вариант функции ngramDistance.
Вычисляет расстояние 4-грамм между двумя строками без учета регистра.
Чем меньше возвращаемое значение, тем более похожи строки.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает число типа Float32 в диапазоне от 0 до 1. Float32
Примеры
Регистронезависимое расстояние по 4-граммам
ngramDistanceCaseInsensitiveUTF8
Добавлено в: v20.1
Предоставляет вариант функции ngramDistance для UTF-8 без учета регистра.
Предполагается, что строки needle и haystack закодированы в UTF-8, и регистр символов игнорируется.
Вычисляет расстояние по 3-граммам между двумя строками UTF-8, игнорируя регистр.
Чем меньше возвращаемое значение, тем более похожи строки.
Синтаксис
Аргументы
haystack— первая сравниваемая строка в кодировке UTF-8.Stringneedle— вторая сравниваемая строка в кодировке UTF-8.String
Возвращаемое значение
Возвращает число Float32 в диапазоне от 0 до 1. Float32
Примеры
Регистронезависимое UTF-8 расстояние по 3-граммам
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-грамм в needle минус количество общих n-грамм), нормированное на количество n-грамм в needle.
Проверяет, что расстояние по 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— шаблон 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— Необязательный параметр. Позиция вhaystack, с которой начинается поиск (нумерация с 1).UInt*
Возвращаемое значение
Возвращает начальную позицию подстроки в байтах (нумерация с 1), если подстрока найдена; в противном случае — 0. UInt64
Примеры
Подсчёт символов в UTF-8