Функции для работы со строками

В RQL представлен набор функций, предназначенных для обработки текстовых данных. Функции для поиска в строках и функции для замены в строках рассмотрены отдельно.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список функций для работы со строками для ClickHouse 24.7.

Table 1. Функции для работы со строками
Функция Описание

empty

Проверяет, является ли входная строка пустой. Возвращает 1 для пустой строки или 0 для непустой строки.

notEmpty

Проверяет, не является ли входная строка пустой. Возвращает 1 для непустой строки или 0 для пустой строки.

length

Возвращает длину строки в байтах (а не символах или кодовых точках Unicode).

lengthUTF8

Возвращает длину строки в кодовых точках Unicode (а не в байтах или символах). Предполагается, что строка содержит допустимый текст в кодировке UTF-8.

leftPad

Дополняет строку слева пробелами или заданной строкой (при необходимости несколько раз), пока результирующая строка не достигнет указанной длины.

leftPadUTF8

Дополняет строку слева пробелами или заданной строкой (при необходимости несколько раз) до достижения указанной длины. В отличие от leftPad, длина строки измеряется в кодовых точках.

rightPad

Дополняет строку справа пробелами или заданной строкой (при необходимости несколько раз) до достижения указанной длины.

rightPadUTF8

Дополняет строку справа пробелами или заданной строкой (при необходимости несколько раз) до достижения указанной длины. В отличие от rightPad, длина строки измеряется в кодовых точках.

lower

Преобразует символы ASCII латиницы в строке в нижний регистр.

upper

Преобразует символы ASCII латиницы в строке в верхний регистр.

lowerUTF8

Преобразует строку в нижний регистр, предполагая, что строка содержит допустимый текст в кодировке UTF-8.

upperUTF8

Преобразует строку в верхний регистр, предполагая, что строка содержит допустимый текст в кодировке UTF-8.

isValidUTF8

Возвращает 1, если набор байтов составляет допустимый текст, закодированный в UTF-8, в противном случае 0.

toValidUTF8

Заменяет недопустимые символы UTF-8 на символ � (U+FFFD). Все подряд идущие недопустимые символы сжимаются в один символ замены.

repeat

Конкатенирует строку с самой собой указанное количество раз.

space

Конкатенирует пробел указанное количество раз с самим собой.

reverse

Инвертирует последовательность байтов в строке.

reverseUTF8

Инвертирует последовательность кодовых точек Unicode в строке. Предполагается, что строка содержит допустимый текст в кодировке UTF-8.

concat

Конкатенирует заданные аргументы.

concatAssumeInjective

Аналогично concat, но предполагает, что concat(s1, s2, …​)sn является инъективной. Может использоваться для оптимизации GROUP BY.

concatWithSeparator

Конкатенирует заданные строки с использованием заданного разделителя.

concatWithSeparatorAssumeInjective

Аналогично concatWithSeparator, но предполагает, что concatWithSeparator(sep, expr1, expr2, expr3…​)result является инъективной. Может использоваться для оптимизации GROUP BY.

substring

Возвращает подстроку строки s, которая начинается с указанного индекса байта offset. Счет начинается с 1. Если offset равен 0, возвращается пустая строка. Если offset отрицательный, подстрока начинается с символов от конца строки.

substringUTF8

Аналогично substring, но для кодовых точек Unicode. Предполагается, что строка содержит допустимый текст в кодировке UTF-8.

substringIndex

Возвращает подстроку s до count вхождений разделителя delim, как в Spark или MySQL.

substringIndexUTF8

Аналогично substringIndex, но для кодовых точек Unicode. Предполагается, что строка содержит допустимый текст в кодировке UTF-8.

appendTrailingCharIfAbsent

Добавляет символ c к строке s, если s непустая и не заканчивается символом c.

convertCharset

Возвращает строку s, преобразованную из кодировки from в кодировку to.

base58Encode

Кодирует строку в формат Base58.

base58Decode

Декодирует строку из формата Base58.

tryBase58Decode

Попытка декодировать строку из формата Base58 с возвратом пустой строки в случае ошибки.

base64Encode

Кодирует строку в формат Base64.

base64Decode

Декодирует строку из формата Base64.

tryBase64Decode

Попытка декодировать строку из формата Base64 с возвратом пустой строки в случае ошибки.

endsWith

Проверяет, заканчивается ли строка определенным суффиксом.

endsWithUTF8

То же, что и endsWith, но с учетом кодировки UTF-8.

startsWith

Проверяет, начинается ли строка с определенного префикса.

startsWithUTF8

То же, что и startsWith, но с учетом кодировки UTF-8.

trim

Удаляет пробельные символы с начала и конца строки.

trimLeft

Удаляет пробельные символы с начала строки.

trimRight

Удаляет пробельные символы с конца строки.

trimBoth

Удаляет пробельные символы с обеих сторон строки.

CRC32

Вычисляет CRC32 хеш строки.

CRC32IEEE

Вычисляет CRC32 используя IEEE полином.

CRC64

Вычисляет CRC64 хеш строки.

normalizeQuery

Нормализует строку запроса.

normalizedQueryHash

Вычисляет хеш нормализованного запроса.

normalizeUTF8NFC

Нормализует строку в нормализацию формы C (NFC) для Unicode.

normalizeUTF8NFD

Нормализует строку в нормализацию формы D (NFD) для Unicode.

normalizeUTF8NFKC

Нормализует строку в нормализацию формы KC (NFKC) для Unicode.

normalizeUTF8NFKD

Нормализует строку в нормализацию формы KD (NFKD) для Unicode.

encodeXMLComponent

Кодирует компоненты XML в строке.

decodeXMLComponent

Декодирует компоненты XML из строки.

decodeHTMLComponent

Декодирует HTML компоненты из строки.

extractTextFromHTML

Извлекает текст из HTML строки.

ascii

Возвращает ASCII код первого символа строки.

soundex

Преобразует строку в ее код Soundex.

punycodeEncode

Кодирует строку в формат Punycode.

punycodeDecode

Декодирует строку из формата Punycode.

tryPunycodeDecode

Попытка декодировать строку из формата Punycode с возвратом пустой строки в случае ошибки.

idnaEncode

Кодирует строку в формат IDNA.

tryIdnaEncode

Попытка кодировать строку в формат IDNA с возвратом пустой строки в случае ошибки.

idnaDecode

Декодирует строку из формата IDNA.

byteHammingDistance

Вычисляет расстояние Хэмминга между двумя строками.

stringJaccardIndex

Вычисляет индекс Жаккара для двух строк.

stringJaccardIndexUTF8

Вычисляет индекс Жаккара для двух строк, учитывая кодировку UTF-8.

editDistance

Вычисляет расстояние редактирования (Левенштейна) между двумя строками.

damerauLevenshteinDistance

Вычисляет расстояние Дамерау-Левенштейна между двумя строками.

jaroSimilarity

Вычисляет сходство Джаро между двумя строками.

jaroWinklerSimilarity

Вычисляет сходство Джаро-Винклера между двумя строками.

initcap

Преобразует первый символ каждого слова в верхний регистр.

initcapUTF8

То же, что и initcap, но учитывает кодировку UTF-8.

firstLine

Возвращает первую строку из многострочного текста.