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