Перейти к основному содержимому
Перейти к основному содержимому

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

Функции поиска и замены в строках описаны отдельно.

Примечание

Приведённая ниже документация сгенерирована из системной таблицы system.functions.

CRC32

Добавлена в версии: v20.1

Вычисляет контрольную сумму CRC32 для строки с использованием полинома CRC-32-IEEE 802.3 и начального значения 0xffffffff (реализация zlib).

Синтаксис

CRC32(s)

Аргументы

  • s — строка, для которой вычисляется CRC32. String

Возвращаемое значение

Возвращает контрольную сумму CRC32 для строки. UInt32

Примеры

Пример использования

SELECT CRC32('ClickHouse')
┌─CRC32('ClickHouse')─┐
│          1538217360 │
└─────────────────────┘

CRC32IEEE

Введена в версии: v20.1

Вычисляет контрольную сумму CRC32 для строки с использованием полинома CRC-32-IEEE 802.3.

Синтаксис

CRC32IEEE(s)

Аргументы

  • s — строка, для которой вычисляется CRC32. String

Возвращаемое значение

Возвращает контрольную сумму CRC32 строки. UInt32

Примеры

Пример использования

SELECT CRC32IEEE('ClickHouse');
┌─CRC32IEEE('ClickHouse')─┐
│              3089448422 │
└─────────────────────────┘

CRC64

Введена в версии: v20.1

Вычисляет контрольную сумму CRC64 для строки с использованием полинома CRC-64-ECMA.

Синтаксис

CRC64(s)

Аргументы

  • s — Строка, для которой необходимо вычислить CRC64. String

Возвращаемое значение

Возвращает контрольную сумму CRC64 строки. UInt64

Примеры

Пример использования

SELECT CRC64('ClickHouse');
┌──CRC64('ClickHouse')─┐
│ 12126588151325169346 │
└──────────────────────┘

appendTrailingCharIfAbsent

Введена в: v1.1

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

Синтаксис

appendTrailingCharIfAbsent(s, c)

Аргументы

  • s — входная строка. String
  • c — символ, который будет добавлен, если отсутствует. String

Возвращаемое значение

Возвращает строку s с добавленным символом c, если s не оканчивается на c. String

Примеры

Пример использования

SELECT appendTrailingCharIfAbsent('https://example.com', '/');
┌─appendTraili⋯.com', '/')─┐
│ https://example.com/     │
└──────────────────────────┘

ascii

Введена в: v22.11

Возвращает кодовую точку ASCII первого символа строки s в виде Int32.

Синтаксис

ascii(s)

Аргументы

  • s — строковый параметр. String

Возвращаемое значение

Возвращает кодовую точку ASCII первого символа. Если s пустая, результат — 0. Если первый символ не является символом ASCII или не входит в диапазон Latin-1 Supplement в UTF-16, результат неопределён. Int32

Примеры

Пример использования

SELECT ascii('234')
┌─ascii('234')─┐
│           50 │
└──────────────┘

base32Decode

Добавлена в: v25.6

Декодирует строку в формате Base32 (RFC 4648). Если строка не является корректной Base32-кодировкой, генерируется исключение.

Синтаксис

base32Decode(encoded)

Аргументы

  • encoded — строковый столбец или константа. String

Возвращаемое значение

Возвращает строку, содержащую декодированное значение аргумента. String

Примеры

Пример использования

SELECT base32Decode('IVXGG33EMVSA====');
┌─base32Decode('IVXGG33EMVSA====')─┐
│ Encoded                          │
└──────────────────────────────────┘

base32Encode

Появилась в версии: v25.6

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

Синтаксис

base32Encode(plaintext)

Аргументы

  • plaintext — Открытый текст для кодирования. String

Возвращаемое значение

Возвращает строку, содержащую закодированное значение аргумента. String или FixedString

Примеры

Пример использования

SELECT base32Encode('Encoded')
┌─base32Encode('Encoded')─┐
│ IVXGG33EMVSA====        │
└─────────────────────────┘

base58Decode

Введена в версии: v22.7

Декодирует строку в формате Base58. Если строка не является корректной строкой в кодировке Base58, генерируется исключение.

Синтаксис

base58Decode(encoded)

Аргументы

  • encoded — строковый столбец (String) или константа для декодирования. String

Возвращаемое значение

Возвращает строку с декодированным значением аргумента. String

Примеры

Пример использования

SELECT base58Decode('JxF12TrwUP45BMd');
┌─base58Decode⋯rwUP45BMd')─┐
│ Hello World              │
└──────────────────────────┘

base58Encode

Добавлена в версии: v22.7

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

Синтаксис

base58Encode(plaintext)

Аргументы

  • plaintext — Исходный текст для кодирования. String

Возвращаемое значение

Возвращает строку, содержащую закодированное значение аргумента. String

Примеры

Пример использования

SELECT base58Encode('ClickHouse');
┌─base58Encode('ClickHouse')─┐
│ 4nhk8K7GHXf6zx             │
└────────────────────────────┘

base64Decode

Функция появилась в версии v18.16.

Декодирует строку из представления Base64 в соответствии с RFC 4648. В случае ошибки выбрасывает исключение.

Синтаксис

base64Decode(encoded)

Псевдонимы: FROM_BASE64

Аргументы

  • encoded — строковый столбец или константа для декодирования. Если строка не является корректной строкой в кодировке Base64, выбрасывается исключение. String

Возвращаемое значение

Возвращает декодированную строку. String

Примеры

Пример использования

SELECT base64Decode('Y2xpY2tob3VzZQ==')
┌─base64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse                       │
└──────────────────────────────────┘

base64Encode

Введена в версии: v18.16

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

Синтаксис

base64Encode(plaintext)

Псевдонимы: TO_BASE64

Аргументы

  • plaintext — текст, столбец или константа для декодирования. String

Возвращаемое значение

Возвращает строку, содержащую закодированное значение аргумента. String

Примеры

Пример использования

SELECT base64Encode('clickhouse')
┌─base64Encode('clickhouse')─┐
│ Y2xpY2tob3VzZQ==           │
└────────────────────────────┘

base64URLDecode

Добавлена в: v24.6

Декодирует строку из представления Base64, используя URL-безопасный алфавит в соответствии с RFC 4648. В случае ошибки выбрасывает исключение.

Синтаксис

base64URLDecode(encoded)

Аргументы

  • encoded — строковый столбец или константа для кодирования. Если строка не является корректной строкой в кодировке Base64, генерируется исключение. String

Возвращаемое значение

Возвращает строку, содержащую декодированное значение аргумента. String

Примеры

Пример использования

SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
┌─base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com                            │
└───────────────────────────────────────────────────┘

base64URLEncode

Добавлена в версии: v18.16

Кодирует строку в представление Base64 (RFC 4648) с URL‑безопасным алфавитом.

Синтаксис

base64URLEncode(plaintext)

Аргументы

  • plaintext — Столбец или константа с открытым текстом для кодирования. String

Возвращаемое значение

Возвращает строку, содержащую закодированное значение аргумента. String

Примеры

Пример использования

SELECT base64URLEncode('https://clickhouse.com')
┌─base64URLEncode('https://clickhouse.com')─┐
│ aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ            │
└───────────────────────────────────────────┘

basename

Добавлено в версии: v20.1

Извлекает часть строки, расположенную после её последней прямой или обратной косой черты. Эта функция часто используется для извлечения имени файла из пути.

Синтаксис

basename(expr)

Аргументы

  • expr — строковое выражение. Обратные слэши необходимо экранировать. String

Возвращаемое значение

Возвращает часть входной строки после её последнего прямого или обратного слэша. Если входная строка оканчивается прямым или обратным слэшем, функция возвращает пустую строку. Возвращает исходную строку, если в ней нет ни прямых, ни обратных слэшей. String

Примеры

Извлечение имени файла из пути в Unix

SELECT 'some/long/path/to/file' AS a, basename(a)
┌─a──────────────────────┬─basename('some/long/path/to/file')─┐
│ some/long/path/to/file │ file                               │
└────────────────────────┴────────────────────────────────────┘

Извлечь имя файла из пути в Windows

SELECT 'some\\long\\path\\to\\file' AS a, basename(a)
┌─a──────────────────────┬─basename('some\\long\\path\\to\\file')─┐
│ some\long\path\to\file │ file                                   │
└────────────────────────┴────────────────────────────────────────┘

Строка без символов‑разделителей пути

SELECT 'some-file-name' AS a, basename(a)
┌─a──────────────┬─basename('some-file-name')─┐
│ some-file-name │ some-file-name             │
└────────────────┴────────────────────────────┘

byteHammingDistance

Добавлено в версии v23.9

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

Синтаксис

byteHammingDistance(s1, s2)

Псевдонимы: mismatches

Аргументы

  • s1 — Первая входная строка. String
  • s2 — Вторая входная строка. String

Возвращаемое значение

Возвращает расстояние Хэмминга между двумя строками. UInt64

Примеры

Пример использования

SELECT byteHammingDistance('karolin', 'kathrin')
┌─byteHammingDistance('karolin', 'kathrin')─┐
│                                         3 │
└───────────────────────────────────────────┘

compareSubstrings

Впервые появилось в: v25.2

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

Синтаксис

compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes)

Аргументы

  • s1 — первая строка для сравнения. String
  • s2 — вторая строка для сравнения. String
  • s1_offset — позиция (отсчитываемая с нуля) в s1, с которой начинается сравнение. UInt*
  • s2_offset — позиция (отсчитываемая с нуля) в s2, с которой начинается сравнение. UInt*
  • num_bytes — максимальное количество байт, сравниваемых в обеих строках. Если s1_offset (или s2_offset) + num_bytes выходит за конец входной строки, num_bytes будет соответствующим образом уменьшено. UInt*

Возвращаемое значение

Возвращает:

  • -1, если s1[s1_offset : s1_offset + num_bytes] < s2[s2_offset : s2_offset + num_bytes].
  • 0, если s1[s1_offset : s1_offset + num_bytes] = s2[s2_offset : s2_offset + num_bytes].
  • 1, если s1[s1_offset : s1_offset + num_bytes] > s2[s2_offset : s2_offset + num_bytes]. Int8

Примеры

Пример использования

SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result
┌─result─┐
│      0 │
└────────┘

concat

Введена в версии: v1.1

Объединяет переданные аргументы.

Аргументы, которые не имеют типов String или FixedString, преобразуются в строки с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы с типами, отличными от String/FixedString.

Синтаксис

concat([s1, s2, ...])

Аргументы

  • s1, s2, ... — Любое количество значений произвольного типа. Any

Возвращаемое значение

Возвращает строку (String), созданную путём конкатенации аргументов. Если хотя бы один из аргументов равен NULL, функция возвращает NULL. Если аргументы отсутствуют, возвращается пустая строка. Nullable(String)

Примеры

Конкатенация строк

SELECT concat('Hello, ', 'World!')
┌─concat('Hello, ', 'World!')─┐
│ Hello, World!               │
└─────────────────────────────┘

Конкатенация чисел

SELECT concat(42, 144)
┌─concat(42, 144)─┐
│ 42144           │
└─────────────────┘

concatAssumeInjective

Введена в: v1.1

Аналог функции concat, но предполагает, что concat(s1, s2, ...) → sn является инъективной, т. е. возвращает разные результаты для разных аргументов.

Может использоваться для оптимизации GROUP BY.

Синтаксис

concatAssumeInjective([s1, s2, ...])

Аргументы

  • s1, s2, ... — Произвольное количество значений любого типа. String или FixedString

Возвращаемое значение

Возвращает строку, созданную объединением (конкатенацией) аргументов. Если хотя бы одно из значений аргументов равно NULL, функция возвращает NULL. Если не передано ни одного аргумента, возвращается пустая строка. String

Примеры

Оптимизация GROUP BY

SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)
┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World!      │          3 │
│ Hello, World!      │          2 │
│ Hello, World       │          3 │
└────────────────────┴────────────┘

concatWithSeparator

Добавлена в версии: v22.12

Объединяет переданные строки, разделяя их указанным разделителем.

Синтаксис

concatWithSeparator(sep[, exp1, exp2, ...])

Псевдонимы: concat_ws

Аргументы

  • sep — разделитель. const String или const FixedString
  • exp1, exp2, ... — выражения, которые будут объединены. Аргументы типов, отличных от String или FixedString, приводятся к строкам с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы не типа String/FixedString. Any

Возвращаемое значение

Возвращает строку, полученную конкатенацией аргументов. Если любое из значений аргументов равно NULL, функция возвращает NULL. String

Примеры

Пример использования

SELECT concatWithSeparator('a', '1', '2', '3', '4')
┌─concatWithSeparator('a', '1', '2', '3', '4')─┐
│ 1a2a3a4                                      │
└──────────────────────────────────────────────┘

concatWithSeparatorAssumeInjective

Введена в версии: v22.12

То же, что concatWithSeparator, но предполагается, что concatWithSeparator(sep[,exp1, exp2, ... ]) → result является инъективной. Функция считается инъективной, если она возвращает различные результаты для различных аргументов.

Может использоваться для оптимизации GROUP BY.

Синтаксис

concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ])

Аргументы

  • sep — разделитель. const String или const FixedString
  • exp1, exp2, ... — выражения для конкатенации. Аргументы, которые не имеют тип String или FixedString, преобразуются в строки с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы типов, отличных от String/FixedString. String или FixedString

Возвращаемое значение

Возвращает строку, сформированную конкатенацией аргументов. Если какое-либо из значений аргументов равно NULL, функция возвращает NULL. String

Примеры

Пример использования

CREATE TABLE user_data (
user_id UInt32,
first_name String,
last_name String,
score UInt32
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO user_data VALUES
(1, 'John', 'Doe', 100),
(2, 'Jane', 'Smith', 150),
(3, 'John', 'Wilson', 120),
(4, 'Jane', 'Smith', 90);

SELECT
    concatWithSeparatorAssumeInjective('-', first_name, last_name) as full_name,
    sum(score) as total_score
FROM user_data
GROUP BY concatWithSeparatorAssumeInjective('-', first_name, last_name);
┌─full_name───┬─total_score─┐
│ Jane-Smith  │         240 │
│ John-Doe    │         100 │
│ John-Wilson │         120 │
└─────────────┴─────────────┘

conv

Добавлено в версии v1.1

Преобразует числа между разными системами счисления.

Функция преобразует число из одной системы счисления в другую. Поддерживаются системы счисления с основанием от 2 до 36. Для оснований больше 10 используются буквы A–Z (без учета регистра) для представления цифр 10–35.

Эта функция совместима с функцией CONV() в MySQL.

Синтаксис

conv(number, from_base, to_base)

Аргументы

  • number — Число для преобразования. Может быть строкой или числом. - from_base — Исходное основание системы счисления (2–36). Должно быть целым числом. - to_base — Целевое основание системы счисления (2–36). Должно быть целым числом.

Возвращаемое значение

Строковое представление числа в целевой системе счисления.

Примеры

Преобразование десятичного числа в двоичное

SELECT conv('10', 10, 2)
1010

Преобразование шестнадцатеричного значения в десятичное

SELECT conv('FF', 16, 10)
255

Преобразование при отрицательном числе

SELECT conv('-1', 10, 16)
FFFFFFFFFFFFFFFF

Преобразование двоичного числа в восьмеричное

SELECT conv('1010', 2, 8)
12

convertCharset

Добавлена в версии v1.1

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

Синтаксис

convertCharset(s, from, to)

Аргументы

  • s — входная строка. String
  • from — исходная кодировка. String
  • to — целевая кодировка. String

Возвращаемое значение

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

Примеры

Пример использования

SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1');
┌─convertChars⋯SO-8859-1')─┐
│ Caf�                     │
└──────────────────────────┘

damerauLevenshteinDistance

Добавлено в: v24.1

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

Синтаксис

damerauLevenshteinDistance(s1, s2)

Аргументы

  • s1 — первая входная строка. String
  • s2 — вторая входная строка. String

Возвращаемое значение

Возвращает расстояние Дамерау—Левенштейна между двумя строками. UInt64

Примеры

Пример использования

SELECT damerauLevenshteinDistance('clickhouse', 'mouse')
┌─damerauLevenshteinDistance('clickhouse', 'mouse')─┐
│                                                 6 │
└───────────────────────────────────────────────────┘

decodeHTMLComponent

Появилась в версии: v23.9

Преобразует HTML-сущности в строке в соответствующие символы.

Синтаксис

decodeHTMLComponent(s)

Аргументы

  • s — строка, содержащая HTML-сущности для декодирования. String

Возвращаемое значение

Возвращает строку с декодированными HTML-сущностями. String

Примеры

Пример использования

SELECT decodeHTMLComponent('&lt;div&gt;Hello &amp; &quot;World&quot;&lt;/div&gt;')
┌─decodeHTMLComponent('&lt;div&gt;Hello &amp; &quot;World&quot;&lt;/div&gt;')─┐
│ <div>Hello & "World"</div>                                                  │
└─────────────────────────────────────────────────────────────────────────────┘

decodeXMLComponent

Появилась в версии: v21.2

Преобразует XML‑сущности в строке в соответствующие им символы.

Синтаксис

decodeXMLComponent(s)

Аргументы

  • s — строка, содержащая XML-сущности для декодирования. String

Возвращаемое значение

Возвращает переданную строку с декодированными XML-сущностями. String

Примеры

Пример использования

SELECT decodeXMLComponent('&lt;tag&gt;Hello &amp; World&lt;/tag&gt;')
┌─decodeXMLCom⋯;/tag&gt;')─┐
│ <tag>Hello & World</tag> │
└──────────────────────────┘

editDistance

Добавлена в версии: v23.9

Вычисляет редакционное расстояние между двумя байтовыми строками.

Синтаксис

editDistance(s1, s2)

Псевдонимы: levenshteinDistance

Аргументы

  • s1 — Первая входная строка. String
  • s2 — Вторая входная строка. String

Возвращаемое значение

Возвращает редакционное расстояние между двумя строками. UInt64

Примеры

Пример использования

SELECT editDistance('clickhouse', 'mouse')
┌─editDistance('clickhouse', 'mouse')─┐
│                                   6 │
└─────────────────────────────────────┘

editDistanceUTF8

Введена в версии: v24.6

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

Синтаксис

editDistanceUTF8(s1, s2)

Псевдонимы: levenshteinDistanceUTF8

Аргументы

  • s1 — Первая входная строка. String
  • s2 — Вторая входная строка. String

Возвращаемое значение

Возвращает редакционное расстояние между двумя строками в кодировке UTF-8. UInt64

Примеры

Пример использования

SELECT editDistanceUTF8('我是谁', '我是我')
┌─editDistanceUTF8('我是谁', '我是我')──┐
│                                   1 │
└─────────────────────────────────────┘

encodeXMLComponent

Введена в версии: v21.1

Экранирует символы для помещения строки в текстовый узел или атрибут XML.

Синтаксис

encodeXMLComponent(s)

Аргументы

  • s — строка для экранирования. String

Возвращаемое значение

Возвращает экранированную строку. String

Примеры

Пример использования

SELECT
    '<tag>Hello & "World"</tag>' AS original,
    encodeXMLComponent('<tag>Hello & "World"</tag>') AS xml_encoded;
┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐
│ <tag>Hello & "World"</tag> │ &lt;tag&gt;Hello &amp; &quot;World&quot;&lt;/tag&gt; │
└────────────────────────────┴──────────────────────────────────────────────────────┘

endsWith

Добавлена в версии: v1.1

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

Синтаксис

endsWith(s, suffix)

Аргументы

  • s — строка для проверки. String
  • suffix — суффикс, на наличие которого нужно проверить строку. String

Возвращаемое значение

Возвращает 1, если строка s оканчивается на suffix, иначе 0. UInt8

Примеры

Пример использования

SELECT endsWith('ClickHouse', 'House');
┌─endsWith('Cl⋯', 'House')─┐
│                        1 │
└──────────────────────────┘

endsWithCaseInsensitive

Добавлено в версии: v25.9

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

Синтаксис

endsWithCaseInsensitive(s, suffix)

Аргументы

  • s — строка, которую нужно проверить. String
  • suffix — суффикс, который нужно искать без учёта регистра. String

Возвращаемое значение

Возвращает 1, если s оканчивается на suffix без учёта регистра, иначе 0. UInt8

Примеры

Пример использования

SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE');
┌─endsWithCaseInsensitive('Cl⋯', 'HOUSE')─┐
│                                       1 │
└─────────────────────────────────────────┘

endsWithCaseInsensitiveUTF8

Впервые представлена в: v25.9

Возвращает, оканчивается ли строка s суффиксом suffix без учёта регистра. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение не выполняется, исключение не выбрасывается, а результат не определён.

Синтаксис

endsWithCaseInsensitiveUTF8(s, suffix)

Аргументы

  • s — строка для проверки. String
  • suffix — суффикс, сравнение с которым выполняется без учёта регистра. String

Возвращаемое значение

Возвращает 1, если s заканчивается на suffix без учёта регистра, иначе 0. UInt8

Примеры

Пример использования

SELECT endsWithCaseInsensitiveUTF8('данных', 'ых');
┌─endsWithCaseInsensitiveUTF8('данных', 'ых')─┐
│                                           1 │
└─────────────────────────────────────────────┘

endsWithUTF8

Введена в: v23.8

Возвращает, оканчивается ли строка s суффиксом suffix. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, а результат не определён.

Синтаксис

endsWithUTF8(s, suffix)

Аргументы

  • s — строка для проверки. String
  • suffix — суффикс для проверки. String

Возвращаемое значение

Возвращает 1, если s заканчивается на suffix, иначе 0. UInt8

Примеры

Пример использования

SELECT endsWithUTF8('данных', 'ых');
┌─endsWithUTF8('данных', 'ых')─┐
│                            1 │
└──────────────────────────────┘

extractTextFromHTML

Появилась в v21.3

Извлекает текстовое содержимое из HTML или XHTML.

Эта функция удаляет HTML‑теги, комментарии и элементы script/style, оставляя только текстовое содержимое. Она выполняет:

  • Удаление всех HTML/XML‑тегов
  • Удаление комментариев (<!-- -->)
  • Удаление элементов script и style вместе с их содержимым
  • Обработку секций CDATA (копируются как есть)
  • Корректную обработку и нормализацию пробелов

Примечание: HTML‑сущности не декодируются и при необходимости должны обрабатываться отдельной функцией.

Синтаксис

extractTextFromHTML(html)

Аргументы

  • html — строка с HTML-содержимым, из которого нужно извлечь текст. String

Возвращаемое значение

Возвращает извлечённый текст с нормализованными пробельными символами. String

Примеры

Пример использования

SELECT extractTextFromHTML('
<html>
    <head><title>Page Title</title></head>
    <body>
        <p>Hello <b>World</b>!</p>
        <script>alert("test");</script>
        <!-- comment -->
    </body>
</html>
');
┌─extractTextFromHTML('<html><head>...')─┐
│ Page Title Hello World!                │
└────────────────────────────────────────┘

firstLine

Добавлена в: v23.7

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

Синтаксис

firstLine(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает первую строку входной строки или всю строку, если в ней нет разделителей строк. String

Примеры

Пример использования

SELECT firstLine('foo\\nbar\\nbaz')
┌─firstLine('foo\nbar\nbaz')─┐
│ foo                        │
└────────────────────────────┘

idnaDecode

Добавлена в версии: v24.1

Возвращает представление доменного имени в Юникоде (UTF-8) в соответствии с алгоритмом ToUnicode и механизмом Internationalized Domain Names in Applications (IDNA). В случае ошибки (например, при некорректном входном значении) возвращается исходная строка. Обратите внимание, что повторное применение функций idnaEncode() и idnaDecode() не обязательно возвращает исходную строку из-за нормализации регистра.

Синтаксис

idnaDecode(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает представление входной строки в Юникоде (UTF-8) согласно механизму IDNA для входного значения. String

Примеры

Пример использования

SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')
┌─idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')─┐
│ straße.münchen.de                             │
└───────────────────────────────────────────────┘

idnaEncode

Добавлено в версии: v24.1

Возвращает ASCII-представление (алгоритм ToASCII) доменного имени в соответствии с механизмом Internationalized Domain Names in Applications (IDNA). Входная строка должна быть в UTF-кодировке и преобразуемой в ASCII-строку, в противном случае генерируется исключение.

Примечание

Процент-декодирование (percent decoding) и удаление табуляции, пробелов или управляющих символов не выполняются.

Синтаксис

idnaEncode(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает ASCII-представление входной строки в соответствии с механизмом IDNA для входного значения. String

Примеры

Пример использования

SELECT idnaEncode('straße.münchen.de')
┌─idnaEncode('straße.münchen.de')─────┐
│ xn--strae-oqa.xn--mnchen-3ya.de     │
└─────────────────────────────────────┘

initcap

Впервые появилась в: v23.7

Преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Слова представляют собой последовательности буквенно-цифровых символов, разделённых небуквенно-цифровыми символами.

Примечание

Поскольку initcap преобразует в верхний регистр только первую букву каждого слова, вы можете наблюдать неожиданное поведение для слов, содержащих апострофы или заглавные буквы. Это известная особенность, и в настоящее время нет планов что-либо в ней менять.

Синтаксис

initcap(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает строку s, в которой первая буква каждого слова преобразована в верхний регистр. String

Примеры

Пример использования

SELECT initcap('building for fast')
┌─initcap('building for fast')─┐
│ Building For Fast            │
└──────────────────────────────┘

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

SELECT initcap('John''s cat won''t eat.');
┌─initcap('Joh⋯n\'t eat.')─┐
│ John'S Cat Won'T Eat.    │
└──────────────────────────┘

initcapUTF8

Добавлено в версии: v23.7

Подобно initcap, initcapUTF8 преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, а результат не определён.

Примечание

Эта функция не определяет язык, поэтому, например, для турецкого результат может быть не совсем корректным (i/İ vs. i/I). Если длина последовательности байт UTF-8 различается для верхнего и нижнего регистра одной и той же кодовой точки, результат для этой кодовой точки может быть некорректным.

Синтаксис

initcapUTF8(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает s, в которой первая буква каждого слова преобразована в верхний регистр. String

Примеры

Пример использования

SELECT initcapUTF8('не тормозит')
┌─initcapUTF8('не тормозит')─┐
│ Не Тормозит                │
└────────────────────────────┘

isValidASCII

Введена в версии: v25.9

Возвращает 1, если входной String или FixedString содержит только ASCII-байты (0x00–0x7F), в противном случае — 0. Оптимизирована для положительного случая (когда входное значение является корректным ASCII).

Синтаксис

Псевдонимы: isASCII

Аргументы

  • Нет.

Возвращаемое значение

Примеры

isValidASCII

SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii

isValidUTF8

Впервые представлена в: v20.1

Проверяет, представляет ли набор байтов корректный текст в кодировке UTF-8.

Синтаксис

isValidUTF8(s)

Аргументы

  • s — строка для проверки на корректность кодировки UTF-8. String

Возвращаемое значение

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

Примеры

Пример использования

SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid
┌─valid─┬─invalid─┐
│     1 │       0 │
└───────┴─────────┘

jaroSimilarity

Введена в версии: v24.1

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

Синтаксис

jaroSimilarity(s1, s2)

Аргументы

  • s1 — первая входная строка. String
  • s2 — вторая входная строка. String

Возвращаемое значение

Возвращает коэффициент сходства Джаро между двумя строками. Float64

Примеры

Пример использования

SELECT jaroSimilarity('clickhouse', 'click')
┌─jaroSimilarity('clickhouse', 'click')─┐
│                    0.8333333333333333 │
└───────────────────────────────────────┘

jaroWinklerSimilarity

Впервые добавлена в версии v24.1

Вычисляет меру сходства Яро — Винклера между двумя байтовыми строками.

Синтаксис

jaroWinklerSimilarity(s1, s2)

Аргументы

  • s1 — первая входная строка. String
  • s2 — вторая входная строка. String

Возвращаемое значение

Возвращает значение метрики сходства Джаро–Винклера для двух строк. Float64

Примеры

Пример использования

SELECT jaroWinklerSimilarity('clickhouse', 'click')
┌─jaroWinklerSimilarity('clickhouse', 'click')─┐
│                           0.8999999999999999 │
└──────────────────────────────────────────────┘

left

Введено в версии v22.1

Возвращает подстроку строки s с указанным offset от левого края.

Синтаксис

left(s, offset)

Аргументы

  • s — Строка, для которой вычисляется подстрока. String или FixedString
  • offset — Смещение в байтах. (U)Int*

Возвращаемое значение

Возвращает:

  • Для положительного offset — подстроку строки s длиной offset байт, начиная с левого края строки.
  • Для отрицательного offset — подстроку строки s длиной length(s) - |offset| байт, начиная с левого края строки.
  • Пустую строку, если length равно 0. String

Примеры

Положительный offset

SELECT left('Hello World', 5)
Hello

Отрицательное смещение

SELECT left('Hello World', -6)
Hello

leftPad

Добавлено в: v21.8

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

Синтаксис

leftPad(string, length[, pad_string])

Псевдонимы: lpad

Аргументы

  • string — Входная строка, которую необходимо дополнить. String
  • length — Длина результирующей строки. Если значение меньше длины входной строки, входная строка укорачивается до length символов. (U)Int*
  • pad_string — Необязательный параметр. Строка, которой дополняется входная строка. Если не задано, входная строка дополняется пробелами. String

Возвращаемое значение

Возвращает строку заданной длины, дополненную слева. String

Примеры

Пример использования

SELECT leftPad('abc', 7, '*'), leftPad('def', 7)
┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc                │     def           │
└────────────────────────┴───────────────────┘

leftPadUTF8

Добавлена в версии: v21.8

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

Синтаксис

leftPadUTF8(string, length[, pad_string])

Аргументы

  • string — Входная строка, которую необходимо дополнить. String
  • length — Длина результирующей строки. Если значение меньше длины входной строки, то входная строка укорачивается до length символов. (U)Int*
  • pad_string — Необязательный параметр. Строка, которой дополняется входная строка. Если не указан, входная строка дополняется пробелами. String

Возвращаемое значение

Возвращает строку заданной длины, дополненную слева. String

Примеры

Пример использования

SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7)
┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг                     │    дежз                │
└─────────────────────────────┴────────────────────────┘

leftUTF8

Появилась в версии: v22.1

Возвращает подстроку строки s в кодировке UTF‑8 с заданным offset, начиная с левого края.

Синтаксис

leftUTF8(s, offset)

Аргументы

  • s — строка в кодировке UTF-8, из которой вычисляется подстрока. String или FixedString
  • offset — количество байт смещения. (U)Int*

Возвращаемое значение

Возвращает:

  • Для положительного offset — подстроку s длиной offset байт, начиная с левого края строки.\n"
  • Для отрицательного offset — подстроку s длиной length(s) - |offset| байт, начиная с левого края строки.\n"
  • Пустую строку, если length равно 0. String

Примеры

Положительное смещение

SELECT leftUTF8('Привет', 4)
Прив

Отрицательное смещение

SELECT leftUTF8('Привет', -4)
Пр

lengthUTF8

Введена в версии: v1.1

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

Синтаксис

lengthUTF8(s)

Псевдонимы: CHARACTER_LENGTH, CHAR_LENGTH

Аргументы

  • s — строка, содержащая допустимый текст в кодировке UTF-8. String

Возвращаемое значение

Длина строки s в кодовых точках Unicode. UInt64

Примеры

Пример использования

SELECT lengthUTF8('Здравствуй, мир!')
┌─lengthUTF8('Здравствуй, мир!')─┐
│                             16 │
└────────────────────────────────┘

lower

Введена в версии: v1.1

Преобразует ASCII-строку в нижний регистр.

Синтаксис

lower(s)

Псевдонимы: lcase

Аргументы

  • s — строка, которую нужно преобразовать в нижний регистр. String

Возвращаемое значение

Возвращает строку s в нижнем регистре. String

Примеры

Пример использования

SELECT lower('CLICKHOUSE')
┌─lower('CLICKHOUSE')─┐
│ clickhouse          │
└─────────────────────┘

lowerUTF8

Введена в: v1.1

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

Синтаксис

lowerUTF8(input)

Аргументы

  • input — входная строка для преобразования в нижний регистр. String

Возвращаемое значение

Возвращает строку в нижнем регистре. String

Примеры

Первый

SELECT lowerUTF8('München') as Lowerutf8;
münchen

normalizeUTF8NFC

Добавлена в версии: v21.11

Нормализует строку UTF-8 в соответствии с нормальной формой NFC.

Синтаксис

normalizeUTF8NFC(str)

Аргументы

  • str — входная строка в кодировке UTF-8. String

Возвращаемое значение

Возвращает строку UTF-8 в нормализованной форме NFC. String

Примеры

Пример использования

SELECT
'é' AS original, -- e + combining acute accent (U+0065 + U+0301)
length(original),
normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9)
length(nfc_normalized);
┌─original─┬─length(original)─┬─nfc_normalized─┬─length(nfc_normalized)─┐
│ é        │                2 │ é              │                      2 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘

normalizeUTF8NFD

Добавлена в версии: v21.11

Нормализует строку в кодировке UTF-8 в соответствии с формой нормализации NFD.

Синтаксис

normalizeUTF8NFD(str)

Аргументы

  • str — входная строка UTF-8. String

Возвращаемое значение

Возвращает строку UTF-8 в нормализованной форме NFD. String

Примеры

Пример использования

SELECT
    'é' AS original, -- é (U+00E9)
    length(original),
    normalizeUTF8NFD('é') AS nfd_normalized, -- e + combining acute (U+0065 + U+0301)
    length(nfd_normalized);
┌─original─┬─length(original)─┬─nfd_normalized─┬─length(nfd_normalized)─┐
│ é        │                2 │ é              │                      3 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘

normalizeUTF8NFKC

Появилась в версии: v21.11

Нормализует строку в кодировке UTF-8 в соответствии с нормальной формой NFKC.

Синтаксис

normalizeUTF8NFKC(str)

Аргументы

  • str — входная строка в кодировке UTF-8. String

Возвращаемое значение

Возвращает строку в кодировке UTF-8, нормализованную в форму NFKC. String

Примеры

Пример использования

SELECT
    '① ② ③' AS original,                            -- Circled number characters
    normalizeUTF8NFKC('① ② ③') AS nfkc_normalized;  -- Converts to 1 2 3
┌─original─┬─nfkc_normalized─┐
│ ① ② ③  │ 1 2 3           │
└──────────┴─────────────────┘

normalizeUTF8NFKD

Добавлена в: v21.11

Нормализует строку в кодировке UTF-8 в соответствии с формой нормализации NFKD.

Синтаксис

normalizeUTF8NFKD(str)

Аргументы

  • str — входная строка в кодировке UTF-8. String

Возвращаемое значение

Возвращает строку в нормализованной форме NFKD (UTF-8). String

Примеры

Пример использования

SELECT
    'H₂O²' AS original,                            -- H + subscript 2 + O + superscript 2
    normalizeUTF8NFKD('H₂O²') AS nfkd_normalized;  -- Converts to H 2 O 2
┌─original─┬─nfkd_normalized─┐
│ H₂O²     │ H2O2            │
└──────────┴─────────────────┘

punycodeDecode

Добавлено в: v24.1

Возвращает исходный текст в кодировке UTF-8 для строки, закодированной в формате Punycode. Если передана некорректная строка в формате Punycode, генерируется исключение.

Синтаксис

punycodeDecode(s)

Аргументы

  • s — строка в кодировке Punycode. String

Возвращаемое значение

Возвращает обычный текст входного значения. String

Примеры

Пример использования

SELECT punycodeDecode('Mnchen-3ya')
┌─punycodeDecode('Mnchen-3ya')─┐
│ München                      │
└──────────────────────────────┘

punycodeEncode

Впервые представлена в версии: v24.1

Возвращает представление строки в формате Punycode. Строка должна быть закодирована в UTF-8, в противном случае поведение не определено.

Синтаксис

punycodeEncode(s)

Аргументы

  • s — Входное значение. String

Возвращаемое значение

Возвращает представление входного значения в кодировке Punycode. String

Примеры

Пример использования

SELECT punycodeEncode('München')
┌─punycodeEncode('München')─┐
│ Mnchen-3ya                │
└───────────────────────────┘

regexpExtract

Впервые появилась в: v23.2

Извлекает первую подстроку в haystack, которая соответствует шаблону регулярного выражения и относится к группе с указанным индексом.

Синтаксис

regexpExtract(haystack, pattern[, index])

Псевдонимы: REGEXP_EXTRACT

Аргументы

  • haystack — Строка, в которой будет производиться поиск по регулярному выражению. String
  • pattern — Строка, регулярное выражение. pattern может содержать несколько групп регулярного выражения, index указывает, какую группу нужно извлечь. Индекс 0 означает совпадение со всем регулярным выражением. const String
  • index — Необязательный аргумент. Целое число, большее или равное 0, по умолчанию 1. Определяет, какую группу регулярного выражения нужно извлечь. (U)Int*

Возвращаемое значение

Возвращает строку, соответствующую шаблону. String

Примеры

Пример использования

SELECT
    regexpExtract('100-200', '(\\d+)-(\\d+)', 1),
    regexpExtract('100-200', '(\\d+)-(\\d+)', 2),
    regexpExtract('100-200', '(\\d+)-(\\d+)', 0),
    regexpExtract('100-200', '(\\d+)-(\\d+)');
┌─regexpExtract('100-200', '(\\d+)-(\\d+)', 1)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 2)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 0)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)')─┐
│ 100                                          │ 200                                          │ 100-200                                      │ 100                                       │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┘

repeat

Добавлено в: v20.1

Повторяет строку указанное число раз, объединяя результаты в одну строку.

Синтаксис

repeat(s, n)

Аргументы

  • s — Строка, которую нужно повторить. String
  • n — Количество повторений строки. (U)Int*

Возвращаемое значение

Строка, содержащая строку s, повторённую n раз. Если n — отрицательное число, функция возвращает пустую строку. String

Примеры

Пример использования

SELECT repeat('abc', 10)
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘

reverseUTF8

Добавлено в версии: v1.1

Переворачивает последовательность кодовых точек Unicode в строке. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, и результат не определён.

Синтаксис

reverseUTF8(s)

Аргументы

  • s — строка, содержащая корректный текст в кодировке UTF-8. String

Возвращаемое значение

Возвращает строку с обращённой последовательностью кодовых точек Unicode. String

Примеры

Пример использования

SELECT reverseUTF8('ClickHouse')
esuoHkcilC

Появилась в версии: v22.1

Возвращает подстроку строки s с указанным смещением offset, отсчитываемым справа.

Синтаксис

right(s, offset)

Аргументы

  • s — Строка, из которой вычисляется подстрока. String или FixedString
  • offset — Количество байт смещения. (U)Int*

Возвращаемое значение

Возвращает:

  • Для положительного offset — подстроку s длиной offset байт, начиная с конца строки.
  • Для отрицательного offset — подстроку s длиной length(s) - |offset| байт, начиная с конца строки.
  • Пустую строку, если length равно 0. String

Примеры

Положительное смещение

SELECT right('Hello', 3)
llo

Отрицательное смещение

SELECT right('Hello', -3)
lo

rightPad

Введена в версии v21.8

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

Синтаксис

rightPad(string, length[, pad_string])

Псевдонимы: rpad

Аргументы

  • string — Входная строка, которую нужно дополнить. String
  • length — Длина результирующей строки. Если значение меньше длины входной строки, то входная строка укорачивается до length символов. (U)Int*
  • pad_string — Необязательный аргумент. Строка, которой дополняется входная строка. Если не указана, входная строка дополняется пробелами. String

Возвращаемое значение

Возвращает строку заданной длины, дополненную справа. String

Примеры

Пример использования

SELECT rightPad('abc', 7, '*'), rightPad('abc', 7)
┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc****                 │ abc                │
└─────────────────────────┴────────────────────┘

rightPadUTF8

Введена в: v21.8

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

Синтаксис

rightPadUTF8(string, length[, pad_string])

Аргументы

  • string — Входная строка, которую необходимо дополнить. String
  • length — Длина результирующей строки. Если значение меньше длины входной строки, входная строка укорачивается до length символов. (U)Int*
  • pad_string — Необязательный аргумент. Строка, которой дополняется входная строка. Если не задан, входная строка дополняется пробелами. String

Возвращаемое значение

Возвращает строку заданной длины, дополненную справа. String

Примеры

Пример использования

SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)
┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг***                      │ абвг                    │
└──────────────────────────────┴─────────────────────────┘

rightUTF8

Введена в: v22.1

Возвращает подстроку UTF-8-кодированной строки s с указанным offset, отсчитываемым от конца строки (справа).

Синтаксис

rightUTF8(s, offset)

Аргументы

  • s — Строка в кодировке UTF-8, из которой извлекается подстрока. String или FixedString
  • offset — Количество байт смещения. (U)Int*

Возвращаемое значение

Возвращает:

  • Для положительного offset — подстроку s длиной offset байт, начиная с правого края строки.
  • Для отрицательного offset — подстроку s длиной length(s) - |offset| байт, начиная с правого края строки.
  • Пустую строку, если length равно 0. String

Примеры

Положительное смещение

SELECT rightUTF8('Привет', 4)
ивет

Отрицательное смещение

SELECT rightUTF8('Привет', -4)
ет

soundex

Впервые представлена в: v23.4

Возвращает код Soundex для строки.

Синтаксис

soundex(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает код Soundex для входной строки. String

Примеры

Пример использования

SELECT soundex('aksel')
┌─soundex('aksel')─┐
│ A240             │
└──────────────────┘

space

Появилась в версии: v23.5

Повторяет пробел ( ) указанное число раз.

Синтаксис

space(n)

Аргументы

  • n — количество повторений пробела. (U)Int*

Возвращаемое значение

Возвращает строку, содержащую пробел, повторённый n раз. Если n <= 0, функция возвращает пустую строку. String

Примеры

Пример использования

SELECT space(3) AS res, length(res);
┌─res─┬─length(res)─┐
│     │           3 │
└─────┴─────────────┘

sparseGrams

Добавлена в версии: v25.5

Находит все подстроки заданной строки длиной не менее n, для которых хеши (n-1)-грамм на границах подстроки строго больше, чем хеши любых (n-1)-грамм внутри подстроки. Использует CRC32 в качестве хеш-функции.

Синтаксис

sparseGrams(s[, min_ngram_length, max_ngram_length])

Аргументы

  • s — Входная строка. String
  • min_ngram_length — Необязательный параметр. Минимальная длина извлекаемой n-граммы. Минимальное и значение по умолчанию — 3. UInt*
  • max_ngram_length — Необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Не должно быть меньше min_ngram_length. UInt*
  • min_cutoff_length — Необязательный параметр. Если задан, возвращаются только n-граммы с длиной не меньше min_cutoff_length. Значение по умолчанию совпадает с min_ngram_length. Не должно быть меньше min_ngram_length и не должно быть больше max_ngram_length. UInt*

Возвращаемое значение

Возвращает массив выбранных подстрок. Array(String)

Примеры

Пример использования

SELECT sparseGrams('alice', 3)
┌─sparseGrams('alice', 3)────────────┐
│ ['ali','lic','lice','ice']         │
└────────────────────────────────────┘

sparseGramsHashes

Добавлена в версии v25.5

Находит хэши всех подстрок заданной строки длиной не менее n, для которых хэши (n-1)-грамм на границах подстроки строго больше хэшей любых (n-1)-грамм внутри подстроки. Использует CRC32 в качестве хеш-функции.

Синтаксис

sparseGramsHashes(s[, min_ngram_length, max_ngram_length])

Аргументы

  • s — входная строка. String
  • min_ngram_length — необязательный параметр. Минимальная длина извлекаемых n-грамм. Значение по умолчанию и минимальное значение — 3. UInt*
  • max_ngram_length — необязательный параметр. Максимальная длина извлекаемых n-грамм. Значение по умолчанию — 100. Не должно быть меньше min_ngram_length. UInt*
  • min_cutoff_length — необязательный параметр. Если задан, возвращаются только n-граммы с длиной больше или равной min_cutoff_length. Значение по умолчанию совпадает с min_ngram_length. Не должно быть меньше min_ngram_length и не должно быть больше max_ngram_length. UInt*

Возвращаемое значение

Возвращает массив хешей CRC32 выбранных подстрок. Array(UInt32)

Примеры

Пример использования

SELECT sparseGramsHashes('alice', 3)
┌─sparseGramsHashes('alice', 3)──────────────────────┐
│ [1481062250,2450405249,4012725991,1918774096]      │
└────────────────────────────────────────────────────┘

sparseGramsHashesUTF8

Добавлено в: v25.5

Находит хэши всех подстрок заданной UTF-8-строки длиной не менее n, для которых хэши (n-1)-грамм на границах подстроки строго больше хэшей любых (n-1)-грамм внутри подстроки. Ожидает строку в кодировке UTF-8, выбрасывает исключение в случае некорректной UTF-8-последовательности. Использует CRC32 в качестве хеш-функции.

Синтаксис

sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length])

Аргументы

  • s — входная строка. String
  • min_ngram_length — необязательный параметр. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимальное значение — 3. UInt*
  • max_ngram_length — необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Не должно быть меньше min_ngram_length. UInt*
  • min_cutoff_length — необязательный параметр. Если задан, возвращаются только n-граммы длиной не меньше min_cutoff_length. Значение по умолчанию совпадает с min_ngram_length. Не должен быть меньше min_ngram_length и не должен быть больше max_ngram_length. UInt*

Возвращаемое значение

Возвращает массив хэшей CRC32 выбранных подстрок в кодировке UTF-8. Array(UInt32)

Примеры

Пример использования

SELECT sparseGramsHashesUTF8('алиса', 3)
┌─sparseGramsHashesUTF8('алиса', 3)─┐
│ [4178533925,3855635300,561830861] │
└───────────────────────────────────┘

sparseGramsUTF8

Добавлено в: v25.5

Находит все подстроки заданной строки в кодировке UTF-8 длиной не менее n, для которых значения хэшей (n-1)-грамм на границах подстроки строго больше, чем значения хэшей любых (n-1)-грамм внутри подстроки. Ожидает строку в кодировке UTF-8; при некорректной последовательности UTF-8 генерирует исключение. В качестве хэш-функции используется CRC32.

Синтаксис

sparseGramsUTF8(s[, min_ngram_length, max_ngram_length])

Аргументы

  • s — Входная строка. String
  • min_ngram_length — Необязательный параметр. Минимальная длина извлекаемых n-грамм. Значение по умолчанию и минимальное значение — 3. UInt*
  • max_ngram_length — Необязательный параметр. Максимальная длина извлекаемых n-грамм. Значение по умолчанию — 100. Не должен быть меньше min_ngram_length. UInt*
  • min_cutoff_length — Необязательный параметр. Если задан, возвращаются только n-граммы длиной не меньше min_cutoff_length. Значение по умолчанию совпадает с min_ngram_length. Не должен быть меньше min_ngram_length и не должен превышать max_ngram_length. UInt*

Возвращаемое значение

Возвращает массив отобранных подстрок в кодировке UTF-8. Array(String)

Примеры

Пример использования

SELECT sparseGramsUTF8('алиса', 3)
┌─sparseGramsUTF8('алиса', 3)─┐
│ ['али','лис','иса']         │
└─────────────────────────────┘

startsWith

Добавлена в: v1.1

Проверяет, начинается ли строка с заданной строки.

Синтаксис

startsWith(s, prefix)

Аргументы

  • s — строка, которую нужно проверить. String
  • prefix — префикс, на наличие которого нужно проверить. String

Возвращаемое значение

Возвращает 1, если строка s начинается с prefix, иначе 0. UInt8

Примеры

Пример использования

SELECT startsWith('ClickHouse', 'Click');
┌─startsWith('⋯', 'Click')─┐
│                        1 │
└──────────────────────────┘

startsWithCaseInsensitive

Добавлена в версии: v25.9

Проверяет, начинается ли строка с заданной подстроки без учета регистра.

Синтаксис

startsWithCaseInsensitive(s, prefix)

Аргументы

  • s — строка для проверки. String
  • prefix — префикс для проверки без учета регистра. String

Возвращаемое значение

Возвращает 1, если s начинается с префикса prefix без учета регистра, иначе 0. UInt8

Примеры

Пример использования

SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK');
┌─startsWithCaseInsensitive('⋯', 'CLICK')─┐
│                                       1 │
└─────────────────────────────────────────┘

startsWithCaseInsensitiveUTF8

Появилась в: v25.9

Проверяет, начинается ли строка с указанного префикса без учета регистра. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, и результат неопределён.

Синтаксис

startsWithCaseInsensitiveUTF8(s, prefix)

Аргументы

  • s — строка для проверки. String
  • prefix — префикс (без учета регистра), который нужно проверить. String

Возвращаемое значение

Возвращает 1, если s начинается с префикса prefix без учета регистра, иначе 0. UInt8

Примеры

Пример использования

SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘

startsWithUTF8

Добавлена в версии: v23.8

Проверяет, начинается ли строка с указанного префикса. Предполагается, что строка содержит текст в корректной кодировке UTF-8. Если это предположение нарушено, исключение не генерируется, а результат не определён.

Синтаксис

startsWithUTF8(s, prefix)

Аргументы

  • s — строка, которую нужно проверить. String
  • prefix — префикс, который нужно проверить. String

Возвращаемое значение

Возвращает 1, если s начинается с prefix, иначе 0. UInt8

Примеры

Пример использования

SELECT startsWithUTF8('приставка', 'при')
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘

stringBytesEntropy

Появилась в версии v25.6

Вычисляет энтропию Шеннона распределения байтов в строке.

Синтаксис

stringBytesEntropy(s)

Аргументы

  • s — строка для анализа. String

Возвращаемое значение

Возвращает энтропию Шеннона распределения байтов в строке. Float64

Примеры

Пример использования

SELECT stringBytesEntropy('Hello, world!')
┌─stringBytesEntropy('Hello, world!')─┐
│                         3.07049960  │
└─────────────────────────────────────┘

stringBytesUniq

Введена в версии: v25.6

Подсчитывает количество уникальных байтов в строке.

Синтаксис

stringBytesUniq(s)

Аргументы

  • s — строка для анализа. String

Возвращаемое значение

Возвращает количество различных байт в строке. UInt16

Примеры

Пример использования

SELECT stringBytesUniq('Hello')
┌─stringBytesUniq('Hello')─┐
│                        4 │
└──────────────────────────┘

stringJaccardIndex

Введена в версии v23.11

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

Синтаксис

stringJaccardIndex(s1, s2)

Аргументы

  • s1 — первая входная строка. String
  • s2 — вторая входная строка. String

Возвращаемое значение

Возвращает индекс сходства Жаккара между двумя строками. Float64

Примеры

Пример использования

SELECT stringJaccardIndex('clickhouse', 'mouse')
┌─stringJaccardIndex('clickhouse', 'mouse')─┐
│                                       0.4 │
└───────────────────────────────────────────┘

stringJaccardIndexUTF8

Добавлена в версии: v23.11

Аналог stringJaccardIndex, но для строк в кодировке UTF-8.

Синтаксис

stringJaccardIndexUTF8(s1, s2)

Аргументы

  • s1 — Первая входная строка в кодировке UTF-8. String
  • s2 — Вторая входная строка в кодировке UTF-8. String

Возвращаемое значение

Возвращает индекс сходства Жаккара между двумя строками в кодировке UTF-8. Float64

Примеры

Пример использования

SELECT stringJaccardIndexUTF8('我爱你', '我也爱你')
┌─stringJaccardIndexUTF8('我爱你', '我也爱你')─┐
│                                       0.75 │
└─────────────────────────────────────────────┘

substring

Введена в версии: v1.1

Возвращает подстроку строки s, которая начинается с указанного байтового индекса offset. Подсчёт байтов начинается с 1 по следующей логике:

  • Если offset равен 0, возвращается пустая строка.
  • Если offset отрицательный, подстрока начинается за offset символов от конца строки, а не от её начала.

Необязательный аргумент length указывает максимальное количество байт, которое может иметь возвращаемая подстрока.

Синтаксис

substring(s, offset[, length])

Псевдонимы: byteSlice, mid, substr

Аргументы

  • s — Строка, из которой извлекается подстрока. String или FixedString или Enum
  • offset — Начальная позиция подстроки в s. (U)Int*
  • length — Необязательный параметр. Максимальная длина подстроки. (U)Int*

Возвращаемое значение

Возвращает подстроку s длиной length байт, начиная с индекса offset. String

Примеры

Базовое использование

SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1)
┌─db───────┬─substring('database', 5)─┬─substring('database', 5, 1)─┐
│ database │ base                     │ b                           │
└──────────┴──────────────────────────┴─────────────────────────────┘

substringIndex

Введена в версии: v23.7

Возвращает подстроку из s до count-го вхождения разделителя delim, аналогично функциям в Spark или MySQL.

Синтаксис

substringIndex(s, delim, count)

Псевдонимы: SUBSTRING_INDEX

Аргументы

  • s — Строка, из которой извлекается подстрока. String
  • delim — Символ-разделитель. String
  • count — Количество вхождений разделителя, которые нужно учесть перед извлечением подстроки. Если значение count положительное, возвращается всё слева от последнего разделителя (считая слева направо). Если значение count отрицательное, возвращается всё справа от последнего разделителя (считая справа налево). UInt или Int

Возвращаемое значение

Возвращает подстроку строки s до count-го вхождения delim. String

Примеры

Пример использования

SELECT substringIndex('www.clickhouse.com', '.', 2)
┌─substringIndex('www.clickhouse.com', '.', 2)─┐
│ www.clickhouse                               │
└──────────────────────────────────────────────┘

substringIndexUTF8

Впервые появилась в: v23.7

Возвращает подстроку s перед count вхождениями разделителя delim, выполняя обработку на уровне кодовых точек Unicode. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, а результат не определяется.

Синтаксис

substringIndexUTF8(s, delim, count)

Аргументы

  • s — Строка, из которой извлекается подстрока. String
  • delim — Символ, по которому выполняется разделение. String
  • count — Количество вхождений разделителя, которые нужно посчитать перед извлечением подстроки. Если значение положительное, возвращается всё слева от последнего разделителя (отсчёт слева направо). Если значение отрицательное, возвращается всё справа от последнего разделителя (отсчёт справа налево). UInt или Int

Возвращаемое значение

Возвращает подстроку s до count-го вхождения delim. String

Примеры

Пример UTF-8

SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2)
www.straßen-in-europa

substringUTF8

Добавлено в: v1.1

Возвращает подстроку строки s, которая начинается с указанного индекса по кодовым точкам offset. Подсчёт кодовых точек начинается с 1 по следующей логике:

  • Если offset равен 0, возвращается пустая строка.
  • Если offset отрицательный, подстрока начинается на offset кодовых точек от конца строки, а не от начала.

Необязательный аргумент length задаёт максимальное количество кодовых точек, которое может иметь возвращаемая подстрока.

Примечание

Эта функция предполагает, что строка содержит валидный текст в кодировке UTF-8. Если это предположение нарушено, исключение не генерируется, и результат является неопределённым.

Синтаксис

substringUTF8(s, offset[, length])

Аргументы

  • s — Строка, из которой вычисляется подстрока. String или FixedString или Enum
  • offset — Начальная позиция подстроки в s. Int или UInt
  • length — Максимальная длина подстроки. Необязательный аргумент. Int или UInt

Возвращаемое значение

Возвращает подстроку s длиной length кодовых точек, начиная с индекса кодовой точки offset. String

Примеры

Пример использования

SELECT 'Täglich grüßt das Murmeltier.' AS str, substringUTF8(str, 9), substringUTF8(str, 9, 5)
Täglich grüßt das Murmeltier.    grüßt das Murmeltier.    grüßt

toValidUTF8

Добавлена в: v20.1

Преобразует строку в корректную кодировку UTF-8, заменяя любые некорректные символы UTF-8 символом-заполнителем (U+FFFD). Если обнаруживается несколько подряд идущих некорректных символов, они заменяются одним символом-заполнителем.

Синтаксис

toValidUTF8(s)

Аргументы

  • s — Любой набор байтов, представленный объектом типа данных String. String

Возвращаемое значение

Возвращает допустимую строку в кодировке UTF-8. String

Примеры

Пример использования

SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b')
c
┌─toValidUTF8('a����b')─┐
│ a�b                   │
└───────────────────────┘

trimBoth

Представлена в: v20.1

Удаляет указанные символы с начала и с конца строки. По умолчанию — распространённые пробельные символы (ASCII).

Синтаксис

trimBoth(s[, trim_characters])

Псевдонимы: trim

Аргументы

  • s — Строка, которую нужно обрезать по краям. String
  • trim_characters — Необязательный параметр. Набор символов, которые нужно обрезать. Если не указан, удаляются стандартные пробельные символы. String

Возвращаемое значение

Возвращает строку, у которой указанные символы обрезаны с обеих сторон. String

Примеры

Пример использования

SELECT trimBoth('$$ClickHouse$$', '$')
┌─trimBoth('$$⋯se$$', '$')─┐
│ ClickHouse               │
└──────────────────────────┘

trimLeft

Добавлена в версии v20.1

Удаляет указанные символы с начала строки. По умолчанию удаляет распространённые пробельные символы (ASCII).

Синтаксис

trimLeft(input[, trim_characters])

Псевдонимы: ltrim

Аргументы

  • input — Строка для обрезки. String
  • trim_characters — Необязательный параметр. Набор символов для обрезки. Если параметр не указан, удаляются стандартные пробельные символы. String

Возвращаемое значение

Возвращает строку с указанными символами, удалёнными слева. String

Примеры

Пример использования

SELECT trimLeft('ClickHouse', 'Click');
┌─trimLeft('Cl⋯', 'Click')─┐
│ House                    │
└──────────────────────────┘

trimRight

Введена в версии v20.1

Удаляет указанные символы с конца строки. По умолчанию удаляет стандартные пробельные символы (ASCII).

Синтаксис

trimRight(s[, trim_characters])

Псевдонимы: rtrim

Аргументы

  • s — Строка для обрезки. String
  • trim_characters — Необязательный набор символов для обрезки. Если не указан, удаляются обычные пробельные символы. String

Возвращаемое значение

Возвращает строку, в которой указанные символы удалены справа. String

Примеры

Пример использования

SELECT trimRight('ClickHouse','House');
┌─trimRight('C⋯', 'House')─┐
│ Click                    │
└──────────────────────────┘

tryBase32Decode

Добавлена в: v25.6

Принимает строку и декодирует её, используя кодировку Base32.

Синтаксис

tryBase32Decode(encoded)

Аргументы

  • encoded — столбец типа String или константа для декодирования. Если строка не является корректной строкой в кодировке Base32, в случае ошибки возвращается пустая строка. String

Возвращаемое значение

Возвращает строку с декодированным значением аргумента. String

Примеры

Пример использования

SELECT tryBase32Decode('IVXGG33EMVSA====');
┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Encoded                             │
└─────────────────────────────────────┘

tryBase58Decode

Добавлена в версии v22.10

Аналогична base58Decode, но в случае ошибки возвращает пустую строку.

Синтаксис

tryBase58Decode(encoded)

Аргументы

  • encoded — строковый столбец или константа. Если строка не является корректной Base58-строкой, при ошибке возвращается пустая строка. String

Возвращаемое значение

Возвращает строку, содержащую декодированное значение аргумента. String

Примеры

Пример использования

SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;
┌─res─────┬─res_invalid─┐
│ Encoded │             │
└─────────┴─────────────┘

tryBase64Decode

Появилась в версии: v18.16

Аналог base64Decode, но в случае ошибки возвращает пустую строку.

Синтаксис

tryBase64Decode(encoded)

Аргументы

  • encoded — Столбец или константа типа String для декодирования. Если строка не является корректной строкой в кодировке Base64, в случае ошибки возвращается пустая строка. String

Возвращаемое значение

Возвращает строку, содержащую декодированное значение аргумента. String

Примеры

Пример использования

SELECT tryBase64Decode('Y2xpY2tob3VzZQ==')
┌─tryBase64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse                          │
└─────────────────────────────────────┘

tryBase64URLDecode

Введена в: v18.16

Аналогична base64URLDecode, но в случае ошибки возвращает пустую строку.

Синтаксис

tryBase64URLDecode(encoded)

Аргументы

  • encoded — Строковый столбец или константа для декодирования. Если строка не является корректной строкой в кодировке Base64, в случае ошибки возвращается пустая строка. String

Возвращаемое значение

Возвращает строку, содержащую декодированное значение аргумента. String

Примеры

Пример использования

SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
┌─tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com                               │
└──────────────────────────────────────────────────────┘

tryIdnaEncode

Добавлена в версии: v24.1

Возвращает представление доменного имени в Unicode (UTF-8) по алгоритму ToUnicode в соответствии с механизмом Internationalized Domain Names in Applications (IDNA). В случае ошибки возвращает пустую строку вместо выбрасывания исключения.

Синтаксис

tryIdnaEncode(s)

Аргументы

  • s — входная строка. String

Возвращаемое значение

Возвращает ASCII-представление входной строки в соответствии с механизмом IDNA для входного значения или пустую строку, если входные данные некорректны. String

Примеры

Пример использования

SELECT tryIdnaEncode('straße.münchen.de')
┌─tryIdnaEncode('straße.münchen.de')──┐
│ xn--strae-oqa.xn--mnchen-3ya.de     │
└─────────────────────────────────────┘

tryPunycodeDecode

Добавлена в версии: v24.1

Аналог функции punycodeDecode, но возвращает пустую строку, если передана некорректная строка в кодировке Punycode.

Синтаксис

tryPunycodeDecode(s)

Аргументы

  • s — строка в кодировке Punycode. String

Возвращаемое значение

Возвращает обычную текстовую строку для входного значения или пустую строку, если входное значение недопустимо. String

Примеры

Пример использования

SELECT tryPunycodeDecode('Mnchen-3ya')
┌─tryPunycodeDecode('Mnchen-3ya')─┐
│ München                         │
└─────────────────────────────────┘

upper

Добавлена в версии: v1.1

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

Синтаксис

upper(s)

Псевдонимы: ucase

Аргументы

  • s — Строка для преобразования в верхний регистр. String

Возвращаемое значение

Возвращает строку s в верхнем регистре. String

Примеры

Пример использования

SELECT upper('clickhouse')
┌─upper('clickhouse')─┐
│ CLICKHOUSE          │
└─────────────────────┘

upperUTF8

Добавлена в: v1.1

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

Примечание

Эта функция не определяет язык, поэтому, например, для турецкого результат может быть не совсем корректным (i/İ vs. i/I). Если длина последовательности байтов UTF-8 различается для верхнего и нижнего регистра одной и той же кодовой точки (например, и ß), результат для этой кодовой точки может быть некорректным.

Синтаксис

upperUTF8(s)

Аргументы

  • s — строковый тип. String

Возвращаемое значение

Значение строкового типа данных. String

Примеры

Пример использования

SELECT upperUTF8('München') AS Upperutf8
┌─Upperutf8─┐
│ MÜNCHEN   │
└───────────┘