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

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

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

Примечание

Приведённая ниже документация сгенерирована из системной таблицы 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 — строка, для которой вычисляется CRC32. String

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

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

Примеры

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

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

CRC64

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

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

Синтаксис

CRC64(ы)

Аргументы

  • 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

Примеры

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

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

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

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

Примеры

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

SELECT concat('Привет, ', 'мир!')
┌─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)─┐
│ Привет, мир!       │          3 │
│ Привет, мир!       │          2 │
│ Привет, мир        │          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;Привет &amp; &quot;Мир&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;Привет &amp; Мир&lt;/tag&gt;')
┌─decodeXMLCom⋯;/tag&gt;')─┐
│ <tag>Привет & мир</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>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>Заголовок страницы</title></head>
    <body>
        <p>Привет, <b>мир</b>!</p>
        <script>alert("тест");</script>
        <!-- комментарий -->
    </body>
</html>
');
┌─extractTextFromHTML('<html><head>...')─┐
│ Заголовок страницы «Привет, мир!»      │
└────────────────────────────────────────┘

firstLine

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

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

Синтаксис

firstLine(s)

Аргументы

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

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

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

Примеры

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

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

idnaDecode

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

Возвращает Unicode-представление (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')─┐
│ Сборка Для Скорости          │
└──────────────────────────────┘

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

SELECT initcap('Кот Джона не ест.');
┌─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.

Синтаксис

Псевдонимы: 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 некорректный
┌─валидные─┬─невалидные─┐
│     1 │       0 │
└───────┴─────────┘

jaroSimilarity

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

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

Синтаксис

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)
Привет

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

SELECT left('Hello World', -6)
Здравствуйте

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

Дополняет строку в UTF-8 слева пробелами или указанной строкой (при необходимости — многократно) до тех пор, пока результирующая строка не достигнет заданной длины. В отличие от 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)

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

Примеры

Первый

SELECT lowerUTF8('München') as Lowerutf8;
Мюнхен

normalizeUTF8NFC

Впервые появилась в версии: v21.11

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

Синтаксис

normalizeUTF8NFC(str)

Аргументы

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

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

Возвращает строку в нормализованной форме NFC для 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

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

Возвращает строку UTF-8 в нормализованной форме NFD. 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

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

Возвращает строку в кодировке UTF-8 в нормализованной форме NFKD. 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')─┐
│ Мюнхен                       │
└──────────────────────────────┘

punycodeEncode

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

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

Синтаксис

punycodeEncode(s)

Аргументы

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

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

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

Примеры

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

SELECT punycodeEncode('Münхен')
┌─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)
лло

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

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 — первая входная строка UTF-8. String
  • s2 — вторая входная строка UTF-8. String

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

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

Синтаксис

substringIndexUTF8(s, delim, count)

Аргументы

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

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====')─┐
│ Закодировано                        │
└─────────────────────────────────────┘

tryBase58Decode

Появилась в: v22.10

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

Синтаксис

tryBase58Decode(encoded)

Аргументы

  • encoded — столбец или константа типа String. Если строка не является корректной в кодировке 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)

Аргументы

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

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

Примеры

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

SELECT upperUTF8('München') AS Upperutf8
┌─Upperutf8─┐
│ МЮНХЕН    │
└───────────┘