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

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

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

Примечание

Приведённая ниже документация сгенерирована из системной таблицы 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 в UTF-16, результат не определён. Int32

Примеры

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

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

base32Decode

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

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

Синтаксис

base32Decode(encoded)

Аргументы

  • encoded — столбец типа String или константа. String

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

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

Примеры

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

SELECT base32Decode('IVXGG33EMVSA====');
┌─base32Decode('IVXGG33EMVSA====')─┐
│ Закодировано                     │
└──────────────────────────────────┘

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.

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

Синтаксис

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;
┌─оригинал───────────────────┬─xml_кодировка────────────────────────────────────────┐
│ <tag>Привет & "Мир"</tag> │ &lt;tag&gt;Привет &amp; &quot;Мир&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>Заголовок страницы</title></head>
    <body>
        <p>Привет <b>Мир</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

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

Возвращает Unicode-представление во входной строки в кодировке 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-encoding и удаление табуляций, пробелов или управляющих символов.

Синтаксис

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('строительство для быстрого')
┌─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 отличается для верхнего и нижнего регистра одной и той же точки кода (code point), результат для этого символа может быть некорректным.

Синтаксис

initcapUTF8(s)

Аргументы

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

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

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

Примеры

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

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

isValidASCII

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

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

Синтаксис

Псевдонимы: 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 валидный, isValidUTF8('\\xc3\\x28') AS невалидный
┌─valid─┬─invalid─┐
│     1 │       0 │
└───────┴─────────┘

jaroSimilarity

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

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

Синтаксис

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

Примеры

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

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

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

Синтаксис

lengthUTF8(s)

Псевдонимы: CHAR_LENGTH, CHARACTER_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

Примеры

first

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

normalizeUTF8NFC

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

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

Синтаксис

normalizeUTF8NFC(str)

Аргументы

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

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

Возвращает строку в нормальной форме NFC (NFC-normalized) для UTF-8. String

Примеры

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

SELECT
'é' AS original, -- e + комбинируемый знак акута (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

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

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

Примеры

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

SELECT
    'é' AS original, -- é (U+00E9)
    length(original),
    normalizeUTF8NFD('é') AS nfd_normalized, -- e + комбинируемый акут (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

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

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

Примеры

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

SELECT
    '① ② ③' AS original,                            -- Символы чисел в кружках
    normalizeUTF8NFKC('① ② ③') AS nfkc_normalized;  -- Преобразует в 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 + индекс 2 внизу + O + индекс 2 вверху
    normalizeUTF8NFKD('H₂O²') AS nfkd_normalized;  -- Преобразует в 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*

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

Возвращает массив извлечённых подстрок. 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*

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

Возвращает массив хэшей 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*

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

Возвращает массив 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*

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

Возвращает массив выбранных подстрок в кодировке 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 — первая входная строка в кодировке UTF8. String
  • s2 — вторая входная строка в кодировке UTF8. String

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

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

Примеры

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

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

substring

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

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

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

Необязательный аргумент 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 code points. Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, и результат не определён.

Синтаксис

substringIndexUTF8(s, delim, count)

Аргументы

  • s — Строка, из которой извлекается подстрока. String
  • delim — Символ, по которому выполняется разбиение. String
  • count — Количество вхождений разделителя, которые нужно учесть перед извлечением подстроки. Если count положительно, возвращается всё слева от последнего разделителя (при подсчёте слева). Если 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 по кодовым точкам Unicode. Отсчёт байтов начинается с 1 по следующей логике:

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

Необязательный аргумент 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 — строковый столбец или константа для декодирования. Если строка не является корректной Base32-строкой, в случае ошибки возвращается пустая строка. String

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

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

Примеры

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

SELECT tryBase32Decode('IVXGG33EMVSA====');
┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Закодировано                        │
└─────────────────────────────────────┘

tryBase58Decode

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

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

Синтаксис

tryBase58Decode(encoded)

Аргументы

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

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

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

Примеры

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

SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;
┌─res─────┬─res_invalid─┐
│ Закодировано │             │
└─────────┴─────────────┘

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

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

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

Примеры

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

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