> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по функциям для работы со строками

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

export const VersionBadge = ({minVersion}) => <div className="versionBadge">
    <div className="versionIcon" style={{
  marginRight: "8px",
  marginTop: "4px"
}}>
      <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path d="M5 14C5.82843 14 6.5 13.3284 6.5 12.5C6.5 11.6716 5.82843 11 5 11C4.17157 11 3.5 11.6716 3.5 12.5C3.5 13.3284 4.17157 14 5 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M5 5C5.82843 5 6.5 4.32843 6.5 3.5C6.5 2.67157 5.82843 2 5 2C4.17157 2 3.5 2.67157 3.5 3.5C3.5 4.32843 4.17157 5 5 5Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M13 10.5C13.8284 10.5 14.5 9.82843 14.5 9C14.5 8.17157 13.8284 7.5 13 7.5C12.1716 7.5 11.5 8.17157 11.5 9C11.5 9.82843 12.1716 10.5 13 10.5Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M11.5 9H9.5C9.03426 9 8.57493 8.89157 8.15836 8.68328C7.74179 8.475 7.37944 8.17259 7.1 7.8L5 5V11" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
      </svg>
    </div>
    Доступно начиная с версии {minVersion}
  </div>;

Функции для [поиска](/ru/reference/functions/regular-functions/string-search-functions) и [замены](/ru/reference/functions/regular-functions/string-replace-functions) в строках описаны отдельно.

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

{/*AUTOGENERATED_START*/}

<div id="CRC32">
  ## CRC32
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
CRC32(s)
```

**Аргументы**

* `s` — строка `String`, для которой вычисляется CRC32. [`String`](/ru/reference/data-types/string)

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

Возвращает контрольную сумму CRC32 для строки. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT CRC32('ClickHouse')
```

```response title=Response theme={null}
┌─CRC32('ClickHouse')─┐
│          1538217360 │
└─────────────────────┘
```

<div id="CRC32IEEE">
  ## CRC32IEEE
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
CRC32IEEE(s)
```

**Аргументы**

* `s` — строка, для которой вычисляется CRC32. [`String`](/ru/reference/data-types/string)

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

Возвращает контрольную сумму CRC32 для строки. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT CRC32IEEE('ClickHouse');
```

```response title=Response theme={null}
┌─CRC32IEEE('ClickHouse')─┐
│              3089448422 │
└─────────────────────────┘
```

<div id="CRC64">
  ## CRC64
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
CRC64(s)
```

**Аргументы**

* `s` — строка, для которой вычисляется CRC64. [`String`](/ru/reference/data-types/string)

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

Возвращает контрольную сумму CRC64 для строки. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT CRC64('ClickHouse');
```

```response title=Response theme={null}
┌──CRC64('ClickHouse')─┐
│ 12126588151325169346 │
└──────────────────────┘
```

<div id="appendTrailingCharIfAbsent">
  ## appendTrailingCharIfAbsent
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
appendTrailingCharIfAbsent(s, c)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)
* `c` — Символ, который нужно добавить, если он отсутствует. [`String`](/ru/reference/data-types/string)

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

Возвращает строку `s` с добавленным символом `c`, если `s` не заканчивается на `c`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT appendTrailingCharIfAbsent('https://example.com', '/');
```

```response title=Response theme={null}
┌─appendTraili⋯.com', '/')─┐
│ https://example.com/     │
└──────────────────────────┘
```

<div id="ascii">
  ## ascii
</div>

Добавленный в: v22.11.0

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

**Синтаксис**

```sql theme={null}
ascii(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает код точки ASCII для первого символа. Если `s` — пустая строка, результат равен `0`. Если первый символ не является символом ASCII или не входит в диапазон Latin-1 Supplement UTF-16, результат не определён. [`Int32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT ascii('234')
```

```response title=Response theme={null}
┌─ascii('234')─┐
│           50 │
└──────────────┘
```

<div id="base32Decode">
  ## base32Decode
</div>

Добавленный в: v25.6.0

Декодирует строку [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) (RFC 4648).
Если строка не является корректной строкой в кодировке Base32, генерируется исключение.

**Синтаксис**

```sql theme={null}
base32Decode(encoded)
```

**Аргументы**

* `encoded` — столбец типа String или константа. [`String`](/ru/reference/data-types/string)

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

Возвращает строку с декодированным значением аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base32Decode('IVXGG33EMVSA====');
```

```response title=Response theme={null}
┌─base32Decode('IVXGG33EMVSA====')─┐
│ Encoded                          │
└──────────────────────────────────┘
```

<div id="base32Encode">
  ## base32Encode
</div>

Добавленный в: v25.6.0

Кодирует строку в [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6).

**Синтаксис**

```sql theme={null}
base32Encode(plaintext)
```

**Аргументы**

* `plaintext` — Открытый текст, который нужно закодировать. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, содержащую закодированное значение аргумента. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)

**Примеры**

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

```sql title=Query theme={null}
SELECT base32Encode('Encoded')
```

```response title=Response theme={null}
┌─base32Encode('Encoded')─┐
│ IVXGG33EMVSA====        │
└─────────────────────────┘
```

<div id="base58Decode">
  ## base58Decode
</div>

Добавленный в: v22.7.0

Декодирует строку в формате [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3).
Если строка не является корректной строкой Base58, генерируется исключение.
Необязательный второй аргумент `expected_size` можно указать для выбора оптимизированного декодера фиксированного размера.
В настоящее время поддерживаются значения 32 и 64. Для остальных значений используется универсальный декодер.
Если выбран оптимизированный декодер, но входную строку нельзя декодировать ровно в такое количество байтов,
функция генерирует исключение (или возвращает пустую строку для `tryBase58Decode`).

**Синтаксис**

```sql theme={null}
base58Decode(encoded[, expected_size])
```

**Аргументы**

* `encoded` — Столбец или константа типа String для декодирования. [`String`](/ru/reference/data-types/string)
* `expected_size` — Необязательно. Ожидаемый размер результата декодирования в байтах. Если указано 32 или 64, используется оптимизированный декодер; для остальных значений используется универсальный декодер. [`UInt8, UInt16, UInt32, or UInt64`](/ru/reference/data-types/int-uint)

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

Возвращает строку, содержащую декодированное значение аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base58Decode('JxF12TrwUP45BMd');
```

```response title=Response theme={null}
┌─base58Decode⋯rwUP45BMd')─┐
│ Hello World              │
└──────────────────────────┘
```

<div id="base58Encode">
  ## base58Encode
</div>

Добавленный в: v22.7.0

Кодирует строку в [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html).

**Синтаксис**

```sql theme={null}
base58Encode(plaintext)
```

**Аргументы**

* `plaintext` — Открытый текст, который нужно закодировать. [`String`](/ru/reference/data-types/string)

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

Возвращает строку с закодированным значением аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base58Encode('ClickHouse');
```

```response title=Response theme={null}
┌─base58Encode('ClickHouse')─┐
│ 4nhk8K7GHXf6zx             │
└────────────────────────────┘
```

<div id="base64Decode">
  ## base64Decode
</div>

Добавленный в: v18.16.0

Декодирует строку из представления [Base64](https://en.wikipedia.org/wiki/Base64) в соответствии с RFC 4648.
В случае ошибки генерирует исключение.

**Синтаксис**

```sql theme={null}
base64Decode(encoded)
```

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

**Аргументы**

* `encoded` — столбец типа String или константа для декодирования. Если строка некорректно закодирована в Base64, генерируется исключение. [`String`](/ru/reference/data-types/string)

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

Возвращает декодированную строку. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base64Decode('Y2xpY2tob3VzZQ==')
```

```response title=Response theme={null}
┌─base64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse                       │
└──────────────────────────────────┘
```

<div id="base64Encode">
  ## base64Encode
</div>

Добавленный в: v18.16.0

Кодирует строку в формате [Base64](https://en.wikipedia.org/wiki/Base64) в соответствии с RFC 4648.

**Синтаксис**

```sql theme={null}
base64Encode(plaintext)
```

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

**Аргументы**

* `plaintext` — столбец или константа с открытым текстом для декодирования. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, содержащую закодированное значение аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base64Encode('clickhouse')
```

```response title=Response theme={null}
┌─base64Encode('clickhouse')─┐
│ Y2xpY2tob3VzZQ==           │
└────────────────────────────┘
```

<div id="base64URLDecode">
  ## base64URLDecode
</div>

Добавленный в: v24.6.0

Декодирует строку из формата [Base64](https://en.wikipedia.org/wiki/Base64) с использованием URL-безопасного алфавита в соответствии с RFC 4648.
При ошибке генерирует исключение.

**Синтаксис**

```sql theme={null}
base64URLDecode(encoded)
```

**Аргументы**

* `encoded` — столбец типа String или константа для кодирования. Если строка закодирована в Base64 некорректно, будет сгенерировано исключение. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, содержащую декодированное значение аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
```

```response title=Response theme={null}
┌─base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com                            │
└───────────────────────────────────────────────────┘
```

<div id="base64URLEncode">
  ## base64URLEncode
</div>

Добавленный в: v18.16.0

Кодирует строку в представлении [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4) (RFC 4648), используя URL-безопасный алфавит.

**Синтаксис**

```sql theme={null}
base64URLEncode(plaintext)
```

**Аргументы**

* `plaintext` — столбец или константа с открытым текстом для кодирования. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, содержащую закодированное значение аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT base64URLEncode('https://clickhouse.com')
```

```response title=Response theme={null}
┌─base64URLEncode('https://clickhouse.com')─┐
│ aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ            │
└───────────────────────────────────────────┘
```

<div id="basename">
  ## basename
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
basename(expr)
```

**Аргументы**

* `expr` — Строковое выражение. Обратные косые черты должны быть экранированы. [`String`](/ru/reference/data-types/string)

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

Возвращает часть входной строки после последней косой или обратной косой черты. Если входная строка заканчивается косой или обратной косой чертой, функция возвращает пустую строку. Если в строке нет косых или обратных косых черт, возвращается исходная строка. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT 'some/long/path/to/file' AS a, basename(a)
```

```response title=Response theme={null}
┌─a──────────────────────┬─basename('some/long/path/to/file')─┐
│ some/long/path/to/file │ file                               │
└────────────────────────┴────────────────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT 'some\\long\\path\\to\\file' AS a, basename(a)
```

```response title=Response theme={null}
┌─a──────────────────────┬─basename('some\\long\\path\\to\\file')─┐
│ some\long\path\to\file │ file                                   │
└────────────────────────┴────────────────────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT 'some-file-name' AS a, basename(a)
```

```response title=Response theme={null}
┌─a──────────────┬─basename('some-file-name')─┐
│ some-file-name │ some-file-name             │
└────────────────┴────────────────────────────┘
```

<div id="byteHammingDistance">
  ## byteHammingDistance
</div>

Добавленный в: v23.9.0

Вычисляет [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между двумя байтовыми строками.

**Синтаксис**

```sql theme={null}
byteHammingDistance(s1, s2)
```

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

**Аргументы**

* `s1` — Первая строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая строка. [`String`](/ru/reference/data-types/string)

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

Возвращает расстояние Хэмминга между двумя строками. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT byteHammingDistance('karolin', 'kathrin')
```

```response title=Response theme={null}
┌─byteHammingDistance('karolin', 'kathrin')─┐
│                                         3 │
└───────────────────────────────────────────┘
```

<div id="caseFoldUTF8">
  ## caseFoldUTF8
</div>

Добавленный в: v26.3.0

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

Применяет стандартную свёртку регистра Unicode. Сохраняет символы совместимости, на которые свёртка регистра не влияет
(например, римские цифры, числа в кружках), однако обратите внимание, что некоторые лигатуры, такие как `ﬃ`, всё равно раскладываются, поскольку свёртка регистра Unicode сама по себе их разворачивает.

**Синтаксис**

```sql theme={null}
caseFoldUTF8(str)
```

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

UTF-8-строка после case folding. [`String`](/ru/reference/data-types/string)

**Примеры**

**Базовый пример case folding**

```sql title=Query theme={null}
SELECT caseFoldUTF8('Straße')
```

```response title=Response theme={null}
┌─caseFoldUTF8('Straße')─┐
│ strasse                 │
└─────────────────────────┘
```

<div id="compareSubstrings">
  ## compareSubstrings
</div>

Добавленный в: v25.2.0

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

**Синтаксис**

```sql theme={null}
compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes)
```

**Аргументы**

* `s1` — Первая строка для сравнения. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая строка для сравнения. [`String`](/ru/reference/data-types/string)
* `s1_offset` — Позиция в `s1` (с нумерацией с нуля), с которой начинается сравнение. [`UInt*`](/ru/reference/data-types/int-uint)
* `s2_offset` — Позиция в `s2` (с нумерацией с нуля), с которой начинается сравнение. [`UInt*`](/ru/reference/data-types/int-uint)
* `num_bytes` — Максимальное количество байтов для сравнения в обеих строках. Если `s1_offset` (или `s2_offset`) + `num_bytes` превышает длину входной строки, значение `num_bytes` будет соответственно уменьшено. [`UInt*`](/ru/reference/data-types/int-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`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result
```

```response title=Response theme={null}
┌─result─┐
│      0 │
└────────┘
```

<div id="concat">
  ## concat
</div>

Добавленный в: v1.1.0

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

Аргументы, не относящиеся к типам [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring), преобразуются в строки с использованием сериализации по умолчанию.
Поскольку это снижает производительность, использовать аргументы, отличные от String/FixedString, не рекомендуется.

**Синтаксис**

```sql theme={null}
concat([s1, s2, ...])
```

**Аргументы**

* `s1, s2, ...` — Любое количество значений произвольного типа. [`Any`](/ru/reference/data-types/index)

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

Возвращает строку String, полученную путём конкатенации аргументов. Если какой-либо из аргументов равен `NULL`, функция возвращает `NULL`. Если аргументы отсутствуют, возвращается пустая строка. [`Nullable(String)`](/ru/reference/data-types/nullable)

**Примеры**

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

```sql title=Query theme={null}
SELECT concat('Hello, ', 'World!')
```

```response title=Response theme={null}
┌─concat('Hello, ', 'World!')─┐
│ Hello, World!               │
└─────────────────────────────┘
```

**Объединение чисел**

```sql title=Query theme={null}
SELECT concat(42, 144)
```

```response title=Response theme={null}
┌─concat(42, 144)─┐
│ 42144           │
└─────────────────┘
```

<div id="concatAssumeInjective">
  ## concatAssumeInjective
</div>

Добавленный в: v1.1.0

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

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

**Синтаксис**

```sql theme={null}
concatAssumeInjective([s1, s2, ...])
```

**Аргументы**

* `s1, s2, ...` — Любое количество значений произвольного типа. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)

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

Возвращает строку, полученную объединением аргументов. Если хотя бы одно из значений аргументов равно `NULL`, функция возвращает `NULL`. Если аргументы не переданы, возвращается пустая строка. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)
```

```response title=Response theme={null}
┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World!      │          3 │
│ Hello, World!      │          2 │
│ Hello, World       │          3 │
└────────────────────┴────────────┘
```

<div id="concatWithSeparator">
  ## concatWithSeparator
</div>

Добавленный в: v22.12.0

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

**Синтаксис**

```sql theme={null}
concatWithSeparator(sep[, exp1, exp2, ...])
```

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

**Аргументы**

* `sep` — Разделитель, который будет использоваться. [`const String`](/ru/reference/data-types/string) или [`const FixedString`](/ru/reference/data-types/fixedstring)
* `exp1, exp2, ...` — Выражения для объединения. Аргументы, не имеющие тип `String` или `FixedString`, преобразуются в строки с использованием сериализации по умолчанию. Поскольку это снижает производительность, использовать аргументы не типа `String`/`FixedString` не рекомендуется. [`Any`](/ru/reference/data-types/index)

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

Возвращает строку, созданную объединением аргументов. Если значение любого из аргументов равно `NULL`, функция возвращает `NULL`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT concatWithSeparator('a', '1', '2', '3', '4')
```

```response title=Response theme={null}
┌─concatWithSeparator('a', '1', '2', '3', '4')─┐
│ 1a2a3a4                                      │
└──────────────────────────────────────────────┘
```

<div id="concatWithSeparatorAssumeInjective">
  ## concatWithSeparatorAssumeInjective
</div>

Добавленный в: v22.12.0

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

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

**Синтаксис**

```sql theme={null}
concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ])
```

**Аргументы**

* `sep` — Используемый разделитель. [`const String`](/ru/reference/data-types/string) or [`const FixedString`](/ru/reference/data-types/fixedstring)
* `exp1, exp2, ...` — Выражения для объединения. Аргументы типа, отличного от `String` или `FixedString`, преобразуются в строки с использованием сериализации по умолчанию. Поскольку это снижает производительность, использовать аргументы не типа `String`/`FixedString` не рекомендуется. [`String`](/ru/reference/data-types/string) or [`FixedString`](/ru/reference/data-types/fixedstring)

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

Возвращает строку `String`, полученную объединением аргументов. Если значение любого из аргументов равно `NULL`, функция возвращает `NULL`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
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);
```

```response title=Response theme={null}
┌─full_name───┬─total_score─┐
│ Jane-Smith  │         240 │
│ John-Doe    │         100 │
│ John-Wilson │         120 │
└─────────────┴─────────────┘
```

<div id="conv">
  ## conv
</div>

Добавленный в: v25.10.0

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

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

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

**Синтаксис**

```sql theme={null}
conv(number, from_base, to_base)
```

**Аргументы**

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

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

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

**Примеры**

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

```sql title=Query theme={null}
SELECT conv('10', 10, 2)
```

```response title=Response theme={null}
1010
```

**Преобразовать число из шестнадцатеричной системы в десятичную**

```sql title=Query theme={null}
SELECT conv('FF', 16, 10)
```

```response title=Response theme={null}
255
```

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

```sql title=Query theme={null}
SELECT conv('-1', 10, 16)
```

```response title=Response theme={null}
FFFFFFFFFFFFFFFF
```

**Преобразование двоичного числа в восьмеричную систему счисления**

```sql title=Query theme={null}
SELECT conv('1010', 2, 8)
```

```response title=Response theme={null}
12
```

<div id="convertCharset">
  ## convertCharset
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
convertCharset(s, from, to)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)
* `from` — Исходная кодировка символов. [`String`](/ru/reference/data-types/string)
* `to` — Целевая кодировка символов. [`String`](/ru/reference/data-types/string)

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

Строка `s`, преобразованная из кодировки `from` в кодировку `to`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1');
```

```response title=Response theme={null}
┌─convertChars⋯SO-8859-1')─┐
│ Caf�                     │
└──────────────────────────┘
```

<div id="damerauLevenshteinDistance">
  ## damerauLevenshteinDistance
</div>

Добавленный в: v24.1.0

Вычисляет [расстояние Дамерау — Левенштейна](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) между двумя строками байтов.

**Синтаксис**

```sql theme={null}
damerauLevenshteinDistance(s1, s2)
```

**Аргументы**

* `s1` — Первая входная строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает расстояние Дамерау — Левенштейна между двумя строками. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT damerauLevenshteinDistance('clickhouse', 'mouse')
```

```response title=Response theme={null}
┌─damerauLevenshteinDistance('clickhouse', 'mouse')─┐
│                                                 6 │
└───────────────────────────────────────────────────┘
```

<div id="decodeHTMLComponent">
  ## decodeHTMLComponent
</div>

Добавленный в: v23.9.0

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

**Синтаксис**

```sql theme={null}
decodeHTMLComponent(s)
```

**Аргументы**

* `s` — строка, содержащая HTML-сущности для декодирования. [`String`](/ru/reference/data-types/string)

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

Возвращает строку с декодированными HTML-сущностями. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT decodeHTMLComponent('&lt;div&gt;Hello &amp; &quot;World&quot;&lt;/div&gt;')
```

```response title=Response theme={null}
┌─decodeHTMLComponent('&lt;div&gt;Hello &amp; &quot;World&quot;&lt;/div&gt;')─┐
│ <div>Hello & "World"</div>                                                  │
└─────────────────────────────────────────────────────────────────────────────┘
```

<div id="decodeXMLComponent">
  ## decodeXMLComponent
</div>

Добавленный в: v21.2.0

Декодирует XML-сущности в строке в соответствующие символы.

**Синтаксис**

```sql theme={null}
decodeXMLComponent(s)
```

**Аргументы**

* `s` — Строка, содержащая XML-сущности, которые нужно декодировать. [`String`](/ru/reference/data-types/string)

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

Возвращает переданную строку с декодированными XML-сущностями. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT decodeXMLComponent('&lt;tag&gt;Hello &amp; World&lt;/tag&gt;')
```

```response title=Response theme={null}
┌─decodeXMLCom⋯;/tag&gt;')─┐
│ <tag>Hello & World</tag> │
└──────────────────────────┘
```

<div id="editDistance">
  ## editDistance
</div>

Добавленный в: v23.9.0

Вычисляет [расстояние редактирования](https://en.wikipedia.org/wiki/Edit_distance) между двумя байтовыми строками.

**Синтаксис**

```sql theme={null}
editDistance(s1, s2)
```

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

**Аргументы**

* `s1` — Первая входная строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает расстояние редактирования между двумя строками. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT editDistance('clickhouse', 'mouse')
```

```response title=Response theme={null}
┌─editDistance('clickhouse', 'mouse')─┐
│                                   6 │
└─────────────────────────────────────┘
```

<div id="editDistanceUTF8">
  ## editDistanceUTF8
</div>

Добавленный в: v24.6.0

Вычисляет [расстояние редактирования](https://en.wikipedia.org/wiki/Edit_distance) между двумя строками UTF-8.

**Синтаксис**

```sql theme={null}
editDistanceUTF8(s1, s2)
```

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

**Аргументы**

* `s1` — Первая входная строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает расстояние редактирования между двумя строками в кодировке UTF-8. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT editDistanceUTF8('我是谁', '我是我')
```

```response title=Response theme={null}
┌─editDistanceUTF8('我是谁', '我是我')──┐
│                                   1 │
└─────────────────────────────────────┘
```

<div id="encodeXMLComponent">
  ## encodeXMLComponent
</div>

Добавленный в: v21.1.0

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

**Синтаксис**

```sql theme={null}
encodeXMLComponent(s)
```

**Аргументы**

* `s` — строка для экранирования. [`String`](/ru/reference/data-types/string)

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

Экранированная строка. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    '<tag>Hello & "World"</tag>' AS original,
    encodeXMLComponent('<tag>Hello & "World"</tag>') AS xml_encoded;
```

```response title=Response theme={null}
┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐
│ <tag>Hello & "World"</tag> │ &lt;tag&gt;Hello &amp; &quot;World&quot;&lt;/tag&gt; │
└────────────────────────────┴──────────────────────────────────────────────────────┘
```

<div id="endsWith">
  ## endsWith
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
endsWith(s, suffix)
```

**Аргументы**

* `s` — Проверяемая строка. [`String`](/ru/reference/data-types/string)
* `suffix` — Проверяемый суффикс. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` оканчивается на `suffix`, в противном случае `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT endsWith('ClickHouse', 'House');
```

```response title=Response theme={null}
┌─endsWith('Cl⋯', 'House')─┐
│                        1 │
└──────────────────────────┘
```

<div id="endsWithCaseInsensitive">
  ## endsWithCaseInsensitive
</div>

Добавленный в: v25.10.0

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

**Синтаксис**

```sql theme={null}
endsWithCaseInsensitive(s, suffix)
```

**Аргументы**

* `s` — Строка для проверки. [`String`](/ru/reference/data-types/string)
* `suffix` — Регистронезависимый суффикс для проверки. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` заканчивается на регистронезависимый `suffix`, иначе `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE');
```

```response title=Response theme={null}
┌─endsWithCaseInsensitive('Cl⋯', 'HOUSE')─┐
│                                       1 │
└─────────────────────────────────────────┘
```

<div id="endsWithCaseInsensitiveUTF8">
  ## endsWithCaseInsensitiveUTF8
</div>

Добавленный в: v25.10.0

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

**Синтаксис**

```sql theme={null}
endsWithCaseInsensitiveUTF8(s, suffix)
```

**Аргументы**

* `s` — проверяемая строка. [`String`](/ru/reference/data-types/string)
* `suffix` — регистронезависимый суффикс для проверки. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` оканчивается на регистронезависимый `suffix`, иначе — `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT endsWithCaseInsensitiveUTF8('данных', 'ых');
```

```response title=Response theme={null}
┌─endsWithCaseInsensitiveUTF8('данных', 'ых')─┐
│                                           1 │
└─────────────────────────────────────────────┘
```

<div id="endsWithUTF8">
  ## endsWithUTF8
</div>

Добавленный в: v23.8.0

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

**Синтаксис**

```sql theme={null}
endsWithUTF8(s, suffix)
```

**Аргументы**

* `s` — Проверяемая строка. [`String`](/ru/reference/data-types/string)
* `suffix` — Проверяемый суффикс. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` оканчивается на `suffix`, иначе — `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT endsWithUTF8('данных', 'ых');
```

```response title=Response theme={null}
┌─endsWithUTF8('данных', 'ых')─┐
│                            1 │
└──────────────────────────────┘
```

<div id="extractTextFromHTML">
  ## extractTextFromHTML
</div>

Добавленный в: v21.3.0

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

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

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

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

**Синтаксис**

```sql theme={null}
extractTextFromHTML(html)
```

**Аргументы**

* `html` — `String`, содержащая HTML-контент, из которого нужно извлечь текст. [`String`](/ru/reference/data-types/string)

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

Возвращает извлечённый текст с нормализованными пробелами. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT extractTextFromHTML('
<html>
    <head><title>Page Title</title></head>
    <body>
        <p>Hello <b>World</b>!</p>
        <script>alert("test");</script>
        <!-- comment -->
    </body>
</html>
');
```

```response title=Response theme={null}
┌─extractTextFromHTML('<html><head>...')─┐
│ Page Title Hello World!                │
└────────────────────────────────────────┘
```

<div id="firstLine">
  ## firstLine
</div>

Добавленный в: v23.7.0

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

**Синтаксис**

```sql theme={null}
firstLine(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает первую строку входной строки или всю строку, если в ней нет разделителей строк. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT firstLine('foo\\nbar\\nbaz')
```

```response title=Response theme={null}
┌─firstLine('foo\nbar\nbaz')─┐
│ foo                        │
└────────────────────────────┘
```

<div id="idnaDecode">
  ## idnaDecode
</div>

Добавленный в: v24.1.0

Возвращает представление доменного имени в Unicode (UTF-8) (алгоритм ToUnicode) в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA).
В случае ошибки (например, если входная строка недопустима) возвращается исходная строка.
Обратите внимание, что повторное применение [`idnaEncode()`](#idnaEncode) и [`idnaDecode()`](#idnaDecode) не обязательно возвращает исходную строку из-за нормализации регистра.

**Синтаксис**

```sql theme={null}
idnaDecode(s)
```

**Аргументы**

* `s` — входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает представление входной строки в Unicode (UTF-8) в соответствии с механизмом IDNA для входного значения. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')
```

```response title=Response theme={null}
┌─idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')─┐
│ straße.münchen.de                             │
└───────────────────────────────────────────────┘
```

<div id="idnaEncode">
  ## idnaEncode
</div>

Добавленный в: v24.1.0

Возвращает ASCII-представление (алгоритм ToASCII) доменного имени в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA).
Входная строка должна быть в кодировке UTF и допускать преобразование в ASCII-строку, в противном случае генерируется исключение.

<Note>
  Процентное декодирование, а также удаление символов табуляции, пробелов или управляющих символов не выполняются.
</Note>

**Синтаксис**

```sql theme={null}
idnaEncode(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает ASCII-представление входной строки в соответствии с механизмом IDNA для входного значения. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT idnaEncode('straße.münchen.de')
```

```response title=Response theme={null}
┌─idnaEncode('straße.münchen.de')─────┐
│ xn--strae-oqa.xn--mnchen-3ya.de     │
└─────────────────────────────────────┘
```

<div id="initcap">
  ## initcap
</div>

Добавленный в: v23.7.0

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

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

**Синтаксис**

```sql theme={null}
initcap(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает `s`, в которой первая буква каждого слова преобразуется в верхний регистр. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT initcap('building for fast')
```

```response title=Response theme={null}
┌─initcap('building for fast')─┐
│ Building For Fast            │
└──────────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT initcap('John''s cat won''t eat.');
```

```response title=Response theme={null}
┌─initcap('Joh⋯n\'t eat.')─┐
│ John'S Cat Won'T Eat.    │
└──────────────────────────┘
```

<div id="initcapUTF8">
  ## initcapUTF8
</div>

Добавленный в: v23.7.0

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

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

**Синтаксис**

```sql theme={null}
initcapUTF8(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает `s`, где первая буква каждого слова приведена к верхнему регистру. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT initcapUTF8('не тормозит')
```

```response title=Response theme={null}
┌─initcapUTF8('не тормозит')─┐
│ Не Тормозит                │
└────────────────────────────┘
```

<div id="isValidASCII">
  ## isValidASCII
</div>

Добавленный в: v25.9.0

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

**Синтаксис**

```sql theme={null}
isValidASCII(str)
```

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

**Аргументы**

* Отсутствуют.

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

**Примеры**

**isValidASCII**

```sql title=Query theme={null}
SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii
```

```response title=Response theme={null}
```

<div id="isValidUTF8">
  ## isValidUTF8
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
isValidUTF8(s)
```

**Аргументы**

* `s` — Строка, которую нужно проверить на корректность UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если набор байтов представляет собой корректный текст в кодировке UTF-8, в противном случае — `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid
```

```response title=Response theme={null}
┌─valid─┬─invalid─┐
│     1 │       0 │
└───────┴─────────┘
```

<div id="jaroSimilarity">
  ## jaroSimilarity
</div>

Добавленный в: v24.1.0

Вычисляет [меру сходства Джаро](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) между двумя байтовыми строками.

**Синтаксис**

```sql theme={null}
jaroSimilarity(s1, s2)
```

**Аргументы**

* `s1` — Первая входная строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает коэффициент сходства Джаро для двух строк. [`Float64`](/ru/reference/data-types/float)

**Примеры**

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

```sql title=Query theme={null}
SELECT jaroSimilarity('clickhouse', 'click')
```

```response title=Response theme={null}
┌─jaroSimilarity('clickhouse', 'click')─┐
│                    0.8333333333333333 │
└───────────────────────────────────────┘
```

<div id="jaroWinklerSimilarity">
  ## jaroWinklerSimilarity
</div>

Добавленный в: v24.1.0

Вычисляет [меру сходства Джаро — Винклера](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance) между двумя байтовыми строками.

**Синтаксис**

```sql theme={null}
jaroWinklerSimilarity(s1, s2)
```

**Аргументы**

* `s1` — Первая входная строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает коэффициент сходства Джаро — Винклера для двух строк. [`Float64`](/ru/reference/data-types/float)

**Примеры**

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

```sql title=Query theme={null}
SELECT jaroWinklerSimilarity('clickhouse', 'click')
```

```response title=Response theme={null}
┌─jaroWinklerSimilarity('clickhouse', 'click')─┐
│                           0.8999999999999999 │
└──────────────────────────────────────────────┘
```

<div id="left">
  ## left
</div>

Добавленный в: v22.1.0

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

**Синтаксис**

```sql theme={null}
left(s, offset)
```

**Аргументы**

* `s` — Строка, из которой извлекается подстрока. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)
* `offset` — Смещение в байтах. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает:

* Для положительного `offset` — подстроку строки `s` длиной `offset` байт, начиная слева.
* Для отрицательного `offset` — подстроку строки `s` длиной `length(s) - |offset|` байт, начиная слева.
* Пустую строку, если `length` равно `0`.
  [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT left('Hello World', 5)
```

```response title=Response theme={null}
Hello
```

**Отрицательное значение смещения**

```sql title=Query theme={null}
SELECT left('Hello World', -6)
```

```response title=Response theme={null}
Hello
```

<div id="leftPad">
  ## leftPad
</div>

Добавленный в: v21.8.0

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

**Синтаксис**

```sql theme={null}
leftPad(string, length[, pad_string])
```

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

**Аргументы**

* `string` — Входная строка, которую нужно дополнить. [`String`](/ru/reference/data-types/string)
* `length` — Длина результирующей строки. Если значение меньше длины входной строки, входная строка усекается до `length` символов. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `pad_string` — Необязательно. Строка, используемая для дополнения входной строки. Если не указана, входная строка дополняется пробелами. [`String`](/ru/reference/data-types/string)

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

Возвращает строку заданной длины, дополненную слева. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT leftPad('abc', 7, '*'), leftPad('def', 7)
```

```response title=Response theme={null}
┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc                │     def           │
└────────────────────────┴───────────────────┘
```

<div id="leftPadUTF8">
  ## leftPadUTF8
</div>

Добавленный в: v21.8.0

Дополняет UTF8-строку слева пробелами или указанной строкой (при необходимости — многократно), пока итоговая строка не достигнет заданной длины.
В отличие от [`leftPad`](#leftPad), который измеряет длину строки в байтах, здесь длина строки измеряется в кодовых точках.

**Синтаксис**

```sql theme={null}
leftPadUTF8(string, length[, pad_string])
```

**Аргументы**

* `string` — Входная строка, которую нужно дополнить. [`String`](/ru/reference/data-types/string)
* `length` — Длина результирующей строки. Если это значение меньше длины входной строки, она укорачивается до `length` символов. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `pad_string` — Необязательно. Строка, которой дополняется входная строка. Если не указана, входная строка дополняется пробелами. [`String`](/ru/reference/data-types/string)

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

Возвращает строку указанной длины, дополненную слева. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7)
```

```response title=Response theme={null}
┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг                     │    дежз                │
└─────────────────────────────┴────────────────────────┘
```

<div id="leftUTF8">
  ## leftUTF8
</div>

Добавленный в: v22.1.0

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

**Синтаксис**

```sql theme={null}
leftUTF8(s, offset)
```

**Аргументы**

* `s` — Строка в кодировке UTF-8, из которой вычисляется подстрока. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)
* `offset` — Количество байтов смещения. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает:

* Для положительного `offset` — подстроку `s` длиной `offset` байт, начиная с левой стороны строки.\n"
* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная с левой стороны строки.\n"
* Пустую строку, если `length` равен 0.
  [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT leftUTF8('Привет', 4)
```

```response title=Response theme={null}
Прив
```

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

```sql title=Query theme={null}
SELECT leftUTF8('Привет', -4)
```

```response title=Response theme={null}
Пр
```

<div id="lengthUTF8">
  ## lengthUTF8
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
lengthUTF8(s)
```

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

**Аргументы**

* `s` — строка, содержащая корректный текст в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Длина строки `s` в кодовых точках Unicode. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT lengthUTF8('Здравствуй, мир!')
```

```response title=Response theme={null}
┌─lengthUTF8('Здравствуй, мир!')─┐
│                             16 │
└────────────────────────────────┘
```

<div id="lower">
  ## lower
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
lower(s)
```

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

**Аргументы**

* `s` — Строка, которую нужно преобразовать в нижний регистр. [`String`](/ru/reference/data-types/string)

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

Возвращает строку `s`, преобразованную в нижний регистр. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT lower('CLICKHOUSE')
```

```response title=Response theme={null}
┌─lower('CLICKHOUSE')─┐
│ clickhouse          │
└─────────────────────┘
```

<div id="lowerUTF8">
  ## lowerUTF8
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
lowerUTF8(input)
```

**Аргументы**

* `input` — Строка, которую нужно преобразовать в нижний регистр. [`String`](/ru/reference/data-types/string)

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

Строка в нижнем регистре. [`String`](/ru/reference/data-types/string)

**Примеры**

**первый**

```sql title=Query theme={null}
SELECT lowerUTF8('München') as Lowerutf8;
```

```response title=Response theme={null}
münchen
```

<div id="naturalSortKey">
  ## naturalSortKey
</div>

Добавленный в: v26.3.0

Функция используется для естественной сортировки.

**Синтаксис**

```sql theme={null}
naturalSortKey(s)
```

**Псевдонимы**: `NATURAL_SORT_KEY`

**Аргументы**

* `s` — строка, преобразуемая в ключ естественной сортировки. [`String`](/ru/reference/data-types/string)

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

Возвращает строку ключа естественной сортировки, полученную из `s`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT s FROM t ORDER BY naturalSortKey(s)
```

```response title=Response theme={null}
┌─s───┐
│ a1  │
| a02 │
└─────┘
```

<div id="normalizeUTF8NFC">
  ## normalizeUTF8NFC
</div>

Добавленный в: v21.11.0

Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Синтаксис**

```sql theme={null}
normalizeUTF8NFC(str)
```

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает строку UTF-8 в нормализованной форме NFC. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
'é' AS original, -- e + комбинирующий акут (U+0065 + U+0301)
length(original),
normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9)
length(nfc_normalized);
```

```response title=Response theme={null}
┌─original─┬─length(original)─┬─nfc_normalized─┬─length(nfc_normalized)─┐
│ é        │                2 │ é              │                      2 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
```

<div id="normalizeUTF8NFD">
  ## normalizeUTF8NFD
</div>

Добавленный в: v21.11.0

Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Синтаксис**

```sql theme={null}
normalizeUTF8NFD(str)
```

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает строку в нормализованной форме NFD в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    'é' AS original, -- é (U+00E9)
    length(original),
    normalizeUTF8NFD('é') AS nfd_normalized, -- e + комбинирующий акут (U+0065 + U+0301)
    length(nfd_normalized);
```

```response title=Response theme={null}
┌─original─┬─length(original)─┬─nfd_normalized─┬─length(nfd_normalized)─┐
│ é        │                2 │ é              │                      3 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
```

<div id="normalizeUTF8NFKC">
  ## normalizeUTF8NFKC
</div>

Добавленный в: v21.11.0

Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFKC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Синтаксис**

```sql theme={null}
normalizeUTF8NFKC(str)
```

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает строку в кодировке UTF-8 в нормализованной форме NFKC. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    '① ② ③' AS original,                            -- Символы цифр в кружке
    normalizeUTF8NFKC('① ② ③') AS nfkc_normalized;  -- Преобразует в 1 2 3
```

```response title=Response theme={null}
┌─original─┬─nfkc_normalized─┐
│ ① ② ③  │ 1 2 3           │
└──────────┴─────────────────┘
```

<div id="normalizeUTF8NFKCCasefold">
  ## normalizeUTF8NFKCCasefold
</div>

Добавленный в: v26.3.0

Нормализует строку UTF-8 в соответствии с [формой нормализации NFKC\_Casefold](https://unicode.org/reports/tr44/#NFKC_Casefold), которая применяет нормализацию NFKC, а затем свёртку регистра.
Это полезно при регистронезависимом сопоставлении идентификаторов.

**Синтаксис**

```sql theme={null}
normalizeUTF8NFKCCasefold(str)
```

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает строку в нормализованной форме NFKC\_Casefold. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    'Ä ① Hello' AS original,
    normalizeUTF8NFKCCasefold('Ä ① Hello') AS nfkc_cf_normalized;
```

```response title=Response theme={null}
┌─original───┬─nfkc_cf_normalized─┐
│ Ä ① Hello │ ä 1 hello           │
└────────────┴────────────────────┘
```

<div id="normalizeUTF8NFKD">
  ## normalizeUTF8NFKD
</div>

Добавленный в: v21.11.0

Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFKD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Синтаксис**

```sql theme={null}
normalizeUTF8NFKD(str)
```

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает строку в нормализованной форме NFKD. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    'H₂O²' AS original,                            -- H + нижний индекс 2 + O + верхний индекс 2
    normalizeUTF8NFKD('H₂O²') AS nfkd_normalized;  -- Преобразует в H 2 O 2
```

```response title=Response theme={null}
┌─original─┬─nfkd_normalized─┐
│ H₂O²     │ H2O2            │
└──────────┴─────────────────┘
```

<div id="punycodeDecode">
  ## punycodeDecode
</div>

Добавленный в: v24.1.0

Возвращает открытый текст в кодировке UTF-8 для строки, закодированной в [Punycode](https://en.wikipedia.org/wiki/Punycode).
Если передана некорректная строка в кодировке Punycode, генерируется исключение.

**Синтаксис**

```sql theme={null}
punycodeDecode(s)
```

**Аргументы**

* `s` — строка, закодированная в Punycode. [`String`](/ru/reference/data-types/string)

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

Возвращает открытый текст входного значения. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT punycodeDecode('Mnchen-3ya')
```

```response title=Response theme={null}
┌─punycodeDecode('Mnchen-3ya')─┐
│ München                      │
└──────────────────────────────┘
```

<div id="punycodeEncode">
  ## punycodeEncode
</div>

Добавленный в: v24.1.0

Возвращает строку в представлении [Punycode](https://en.wikipedia.org/wiki/Punycode).
Строка должна быть закодирована в UTF-8, в противном случае поведение не определено.

**Синтаксис**

```sql theme={null}
punycodeEncode(s)
```

**Аргументы**

* `s` — Входное значение. [`String`](/ru/reference/data-types/string)

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

Возвращает входное значение в представлении Punycode. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT punycodeEncode('München')
```

```response title=Response theme={null}
┌─punycodeEncode('München')─┐
│ Mnchen-3ya                │
└───────────────────────────┘
```

<div id="regexpExtract">
  ## regexpExtract
</div>

Добавленный в: v23.2.0

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

**Синтаксис**

```sql theme={null}
regexpExtract(haystack, pattern[, index])
```

**Псевдонимы**: `REGEXP_EXTRACT`, `REGEXP_SUBSTR`

**Аргументы**

* `haystack` — String, строка, в которой ищется совпадение с шаблоном регулярного выражения. [`String`](/ru/reference/data-types/string)
* `pattern` — String, шаблон регулярного выражения. `pattern` может содержать несколько групп регулярного выражения, а `index` указывает, какую именно группу нужно извлечь. Индекс `0` означает совпадение со всем регулярным выражением. [`const String`](/ru/reference/data-types/string)
* `index` — Необязательный. Неотрицательное целое число, указывающее, какую группу регулярного выражения нужно извлечь. По умолчанию используется `1`, если `pattern` содержит хотя бы одну захватывающую группу, и `0` (всё совпадение), если `pattern` не содержит захватывающих групп. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает совпадение в виде строки [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
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+');
```

```response title=Response theme={null}
┌─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+')─┐
│ 100                                          │ 200                                          │ 100-200                                      │ 100                                       │ 100                              │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┴──────────────────────────────────┘
```

<div id="regexpPosition">
  ## regexpPosition
</div>

Добавленный в: v26.5.0

Возвращает позицию в байтах (с отсчётом от 1) `occurrence`-го вхождения `pattern` в `haystack`, начиная поиск с байтовой позиции `position`.

Если `return_option` равен 0 (по умолчанию), возвращается позиция первого байта совпадения. Если 1 — позиция первого байта *после* совпадения.

Если `subexpression` больше 0, вместо позиции всего совпадения возвращается позиция соответствующей группы захвата.

Возвращает 0, если совпадение не найдено или если запрошенная группа захвата не участвовала в совпадении.

Функция предоставляется для совместимости с `regexp_instr` в PostgreSQL (и также доступна под этим псевдонимом). Обратите внимание: позиции измеряются в байтах, как и в других функциях ClickHouse для работы с регулярными выражениями; в PostgreSQL `regexp_instr` использует символьные позиции.

**Синтаксис**

```sql theme={null}
regexpPosition(haystack, pattern[, position[, occurrence[, return_option[, flags[, subexpression]]]]])
```

**Псевдонимы**: `regexpInstr`, `regexp_instr`

**Аргументы**

* `haystack` — Строка, в которой выполняется поиск. [`String`](/ru/reference/data-types/string)
* `pattern` — Шаблон регулярного выражения. [`const String`](/ru/reference/data-types/string)
* `position` — Необязательно. Позиция в байтах, начиная с 1, с которой начинается поиск. По умолчанию: 1. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `occurrence` — Необязательно. Какое по счёту совпадение вернуть. По умолчанию: 1. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `return_option` — Необязательно. `0` возвращает позицию начала совпадения, `1` — позицию сразу после совпадения. По умолчанию: 0. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `flags` — Необязательно. Флаги регулярного выражения. Поддерживаются: `i` (регистронезависимый), `c` (с учётом регистра), `m`/`n` (многострочные якоря), `s` (точка соответствует символу новой строки). По умолчанию: пустая строка. [`const String`](/ru/reference/data-types/string)
* `subexpression` — Необязательно. Индекс группы захвата, позицию которой нужно вернуть. `0` означает всё совпадение. По умолчанию: 0. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает позицию совпадения в байтах или `0`, если совпадение не найдено. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    regexpPosition('hello world', 'world'),
    regexpPosition('aXbXcXd', 'X', 1, 2),
    regexpPosition('aXbXcXd', 'X', 1, 2, 1),
    regexpPosition('Hello WORLD', 'world', 1, 1, 0, 'i'),
    regexpPosition('foo123bar456', '([a-z]+)([0-9]+)', 1, 2, 0, '', 2);
```

```response title=Response theme={null}
┌─...─┬─...─┬─...─┬─...─┬─...─┐
│   7 │   4 │   5 │   7 │  10 │
└─────┴─────┴─────┴─────┴─────┘
```

<div id="removeDiacriticsUTF8">
  ## removeDiacriticsUTF8
</div>

Добавленный в: v26.3.0

Удаляет диакритические знаки (акценты) из строки UTF-8, разлагая символы с помощью NFD,
удаляя комбинируемые знаки (категория Unicode Mn), а затем повторно компонуя их с помощью NFC.

**Синтаксис**

```sql theme={null}
removeDiacriticsUTF8(str)
```

**Псевдонимы**: `removeAccentsUTF8`

**Аргументы**

* `str` — входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Строка в кодировке UTF-8 без диакритических знаков. [`String`](/ru/reference/data-types/string)

**Примеры**

**Базовое удаление диакритических знаков**

```sql title=Query theme={null}
SELECT removeDiacriticsUTF8('café résumé naïve')
```

```response title=Response theme={null}
┌─removeDiacriticsUTF8('café résumé naïve')─┐
│ cafe resume naive                          │
└────────────────────────────────────────────┘
```

<div id="repeat">
  ## repeat
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
repeat(s, n)
```

**Аргументы**

* `s` — строка, которую нужно повторить. [`String`](/ru/reference/data-types/string)
* `n` — количество повторений строки. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Строка, содержащая строку `s`, повторённую `n` раз. Если `n` отрицательно, функция возвращает пустую строку. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT repeat('abc', 10)
```

```response title=Response theme={null}
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
```

<div id="reverseUTF8">
  ## reverseUTF8
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
reverseUTF8(s)
```

**Аргументы**

* `s` — String, содержащая корректный текст в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, в которой последовательность кодовых точек Unicode записана в обратном порядке. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT reverseUTF8('ClickHouse')
```

```response title=Response theme={null}
esuoHkcilC
```

<div id="right">
  ## right
</div>

Добавленный в: v22.1.0

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

**Синтаксис**

```sql theme={null}
right(s, offset)
```

**Аргументы**

* `s` — Строка, из которой извлекается подстрока. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)
* `offset` — Количество байт смещения. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает:

* Для положительного `offset` — подстроку `s` длиной `offset` байт, отсчитываемую от конца строки.
* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, отсчитываемую от конца строки.
* Пустую строку, если `length` равно `0`.
  [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT right('Hello', 3)
```

```response title=Response theme={null}
llo
```

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

```sql title=Query theme={null}
SELECT right('Hello', -3)
```

```response title=Response theme={null}
lo
```

<div id="rightPad">
  ## rightPad
</div>

Добавленный в: v21.8.0

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

**Синтаксис**

```sql theme={null}
rightPad(string, length[, pad_string])
```

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

**Аргументы**

* `string` — Исходная строка, которую нужно дополнить. [`String`](/ru/reference/data-types/string)
* `length` — Длина результирующей строки. Если значение меньше длины входной строки, входная строка укорачивается до `length` символов. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `pad_string` — Необязательно. Строка, которой дополняется исходная строка. Если не указана, исходная строка дополняется пробелами. [`String`](/ru/reference/data-types/string)

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

Возвращает строку заданной длины, дополненную справа. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT rightPad('abc', 7, '*'), rightPad('abc', 7)
```

```response title=Response theme={null}
┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc****                 │ abc                │
└─────────────────────────┴────────────────────┘
```

<div id="rightPadUTF8">
  ## rightPadUTF8
</div>

Добавленный в: v21.8.0

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

**Синтаксис**

```sql theme={null}
rightPadUTF8(string, length[, pad_string])
```

**Аргументы**

* `string` — Входная строка, которую нужно дополнить. [`String`](/ru/reference/data-types/string)
* `length` — Длина результирующей строки. Если значение меньше длины входной строки, входная строка укорачивается до `length` символов. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `pad_string` — Необязательно. Строка, которой дополняется входная строка. Если не указана, входная строка дополняется пробелами. [`String`](/ru/reference/data-types/string)

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

Возвращает строку заданной длины, дополненную справа. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)
```

```response title=Response theme={null}
┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг***                      │ абвг                    │
└──────────────────────────────┴─────────────────────────┘
```

<div id="rightUTF8">
  ## rightUTF8
</div>

Добавленный в: v22.1.0

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

**Синтаксис**

```sql theme={null}
rightUTF8(s, offset)
```

**Аргументы**

* `s` — Строка в кодировке UTF-8, из которой извлекается подстрока. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)
* `offset` — Смещение в байтах. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает:

* Для положительного `offset` — подстроку `s` длиной `offset` байт, отсчитываемую от конца строки.
* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, отсчитываемую от конца строки.
* Пустую строку, если `length` равно `0`.
  [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT rightUTF8('Привет', 4)
```

```response title=Response theme={null}
ивет
```

**Отрицательный OFFSET**

```sql title=Query theme={null}
SELECT rightUTF8('Привет', -4)
```

```response title=Response theme={null}
ет
```

<div id="soundex">
  ## soundex
</div>

Добавленный в: v23.4.0

Возвращает [код Soundex](https://en.wikipedia.org/wiki/Soundex) для строки.

**Синтаксис**

```sql theme={null}
soundex(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает код Soundex для входной строки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT soundex('aksel')
```

```response title=Response theme={null}
┌─soundex('aksel')─┐
│ A240             │
└──────────────────┘
```

<div id="space">
  ## space
</div>

Добавленный в: v23.5.0

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

**Синтаксис**

```sql theme={null}
space(n)
```

**Аргументы**

* `n` — Количество повторений пробела. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает строку из `n` пробелов. Если `n <= 0`, функция возвращает пустую строку. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT space(3) AS res, length(res);
```

```response title=Response theme={null}
┌─res─┬─length(res)─┐
│     │           3 │
└─────┴─────────────┘
```

<div id="sparseGrams">
  ## sparseGrams
</div>

Добавленный в: v25.5.0

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

**Синтаксис**

```sql theme={null}
sparseGrams(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)
* `min_ngram_length` — Необязательно. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимально допустимое значение — 3. [`UInt*`](/ru/reference/data-types/int-uint)
* `max_ngram_length` — Необязательно. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)
* `min_cutoff_length` — Необязательно. Если указано, возвращаются только n-граммы длиной не меньше `min_cutoff_length`. Значение по умолчанию совпадает с `min_ngram_length`. Должно быть не меньше `min_ngram_length` и не больше `max_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)

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

Возвращает массив извлечённых подстрок. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT sparseGrams('alice', 3)
```

```response title=Response theme={null}
┌─sparseGrams('alice', 3)────────────┐
│ ['ali','lic','lice','ice']         │
└────────────────────────────────────┘
```

<div id="sparseGramsHashes">
  ## sparseGramsHashes
</div>

Добавленный в: v25.5.0

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

**Синтаксис**

```sql theme={null}
sparseGramsHashes(s[, min_ngram_length, max_ngram_length])
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)
* `min_ngram_length` — Необязательно. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимально допустимое значение — 3. [`UInt*`](/ru/reference/data-types/int-uint)
* `max_ngram_length` — Необязательно. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)
* `min_cutoff_length` — Необязательно. Если указано, возвращаются только n-граммы длиной не меньше `min_cutoff_length`. Значение по умолчанию совпадает с `min_ngram_length`. Должно быть не меньше `min_ngram_length` и не больше `max_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)

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

Возвращает массив CRC32-хешей выбранных подстрок. [`Array(UInt32)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT sparseGramsHashes('alice', 3)
```

```response title=Response theme={null}
┌─sparseGramsHashes('alice', 3)──────────────────────┐
│ [1481062250,2450405249,4012725991,1918774096]      │
└────────────────────────────────────────────────────┘
```

<div id="sparseGramsHashesUTF8">
  ## sparseGramsHashesUTF8
</div>

Добавленный в: v25.5.0

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

**Синтаксис**

```sql theme={null}
sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length])
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)
* `min_ngram_length` — Необязательно. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимально допустимое значение — 3. [`UInt*`](/ru/reference/data-types/int-uint)
* `max_ngram_length` — Необязательно. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)
* `min_cutoff_length` — Необязательно. Если указано, возвращаются только n-граммы длиной не меньше `min_cutoff_length`. Значение по умолчанию совпадает с `min_ngram_length`. Должно быть не меньше `min_ngram_length` и не больше `max_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)

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

Возвращает массив CRC32-хэшей выбранных UTF-8-подстрок. [`Array(UInt32)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT sparseGramsHashesUTF8('алиса', 3)
```

```response title=Response theme={null}
┌─sparseGramsHashesUTF8('алиса', 3)─┐
│ [4178533925,3855635300,561830861] │
└───────────────────────────────────┘
```

<div id="sparseGramsUTF8">
  ## sparseGramsUTF8
</div>

Добавленный в: v25.5.0

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

**Синтаксис**

```sql theme={null}
sparseGramsUTF8(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)
* `min_ngram_length` — Необязательно. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимально допустимое значение — 3. [`UInt*`](/ru/reference/data-types/int-uint)
* `max_ngram_length` — Необязательно. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)
* `min_cutoff_length` — Необязательно. Если параметр указан, возвращаются только n-граммы длиной не менее `min_cutoff_length`. Значение по умолчанию совпадает со значением `min_ngram_length`. Должно быть не меньше `min_ngram_length` и не больше `max_ngram_length`. [`UInt*`](/ru/reference/data-types/int-uint)

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

Возвращает массив выбранных UTF-8-подстрок. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT sparseGramsUTF8('алиса', 3)
```

```response title=Response theme={null}
┌─sparseGramsUTF8('алиса', 3)─┐
│ ['али','лис','иса']         │
└─────────────────────────────┘
```

<div id="startsWith">
  ## startsWith
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
startsWith(s, prefix)
```

**Аргументы**

* `s` — Строка для проверки. [`String`](/ru/reference/data-types/string)
* `prefix` — Префикс, наличие которого нужно проверить. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` начинается с `prefix`, иначе — `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT startsWith('ClickHouse', 'Click');
```

```response title=Response theme={null}
┌─startsWith('⋯', 'Click')─┐
│                        1 │
└──────────────────────────┘
```

<div id="startsWithCaseInsensitive">
  ## startsWithCaseInsensitive
</div>

Добавленный в: v25.10.0

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

**Синтаксис**

```sql theme={null}
startsWithCaseInsensitive(s, prefix)
```

**Аргументы**

* `s` — Строка, которую нужно проверить. [`String`](/ru/reference/data-types/string)
* `prefix` — Регистронезависимый префикс, наличие которого нужно проверить. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` начинается с `prefix` без учёта регистра, в противном случае — `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK');
```

```response title=Response theme={null}
┌─startsWithCaseInsensitive('⋯', 'CLICK')─┐
│                                       1 │
└─────────────────────────────────────────┘
```

<div id="startsWithCaseInsensitiveUTF8">
  ## startsWithCaseInsensitiveUTF8
</div>

Добавленный в: v25.10.0

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

**Синтаксис**

```sql theme={null}
startsWithCaseInsensitiveUTF8(s, prefix)
```

**Аргументы**

* `s` — Строка, которую нужно проверить. [`String`](/ru/reference/data-types/string)
* `prefix` — Регистронезависимый префикс, наличие которого нужно проверить. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` начинается с регистронезависимого `prefix`, иначе `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')
```

```response title=Response theme={null}
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘
```

<div id="startsWithUTF8">
  ## startsWithUTF8
</div>

Добавленный в: v23.8.0

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

**Синтаксис**

```sql theme={null}
startsWithUTF8(s, prefix)
```

**Аргументы**

* `s` — Строка, которую нужно проверить. [`String`](/ru/reference/data-types/string)
* `prefix` — Префикс, наличие которого нужно проверить. [`String`](/ru/reference/data-types/string)

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

Возвращает `1`, если `s` начинается с `prefix`, иначе — `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT startsWithUTF8('приставка', 'при')
```

```response title=Response theme={null}
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘
```

<div id="stringBytesEntropy">
  ## stringBytesEntropy
</div>

Добавленный в: v25.6.0

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

**Синтаксис**

```sql theme={null}
stringBytesEntropy(s)
```

**Аргументы**

* `s` — строка для анализа. [`String`](/ru/reference/data-types/string)

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

Возвращает энтропию Шеннона для распределения байтов в строке. [`Float64`](/ru/reference/data-types/float)

**Примеры**

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

```sql title=Query theme={null}
SELECT stringBytesEntropy('Hello, world!')
```

```response title=Response theme={null}
┌─stringBytesEntropy('Hello, world!')─┐
│                         3.07049960  │
└─────────────────────────────────────┘
```

<div id="stringBytesUniq">
  ## stringBytesUniq
</div>

Добавленный в: v25.6.0

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

**Синтаксис**

```sql theme={null}
stringBytesUniq(s)
```

**Аргументы**

* `s` — анализируемая строка. [`String`](/ru/reference/data-types/string)

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

Количество различных байтов в строке. [`UInt16`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT stringBytesUniq('Hello')
```

```response title=Response theme={null}
┌─stringBytesUniq('Hello')─┐
│                        4 │
└──────────────────────────┘
```

<div id="stringJaccardIndex">
  ## stringJaccardIndex
</div>

Добавленный в: v23.11.0

Вычисляет [индекс сходства Жаккара](https://en.wikipedia.org/wiki/Jaccard_index) для двух байтовых строк.

**Синтаксис**

```sql theme={null}
stringJaccardIndex(s1, s2)
```

**Аргументы**

* `s1` — Первая входная строка. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает индекс сходства по Жаккару для двух строк. [`Float64`](/ru/reference/data-types/float)

**Примеры**

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

```sql title=Query theme={null}
SELECT stringJaccardIndex('clickhouse', 'mouse')
```

```response title=Response theme={null}
┌─stringJaccardIndex('clickhouse', 'mouse')─┐
│                                       0.4 │
└───────────────────────────────────────────┘
```

<div id="stringJaccardIndexUTF8">
  ## stringJaccardIndexUTF8
</div>

Добавленный в: v23.11.0

Аналог [`stringJaccardIndex`](#stringJaccardIndex), но для строк в кодировке UTF8.

**Синтаксис**

```sql theme={null}
stringJaccardIndexUTF8(s1, s2)
```

**Аргументы**

* `s1` — Первая входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)
* `s2` — Вторая входная строка в кодировке UTF-8. [`String`](/ru/reference/data-types/string)

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

Возвращает индекс сходства Жаккара для двух строк в кодировке UTF-8. [`Float64`](/ru/reference/data-types/float)

**Примеры**

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

```sql title=Query theme={null}
SELECT stringJaccardIndexUTF8('我爱你', '我也爱你')
```

```response title=Response theme={null}
┌─stringJaccardIndexUTF8('我爱你', '我也爱你')─┐
│                                       0.75 │
└─────────────────────────────────────────────┘
```

<div id="substring">
  ## substring
</div>

Добавленный в: v1.1.0

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

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

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

**Синтаксис**

```sql theme={null}
substring(s, offset[, length])
```

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

**Аргументы**

* `s` — Строка, из которой извлекается подстрока. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring) или [`Enum`](/ru/reference/data-types/enum)
* `offset` — Начальная позиция подстроки в `s`. [`(U)Int*`](/ru/reference/data-types/int-uint)
* `length` — Необязательный параметр. Максимальная длина подстроки. [`(U)Int*`](/ru/reference/data-types/int-uint)

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

Возвращает подстроку из `s` длиной `length` байт, начиная с индекса `offset`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1)
```

```response title=Response theme={null}
┌─db───────┬─substring('database', 5)─┬─substring('database', 5, 1)─┐
│ database │ base                     │ b                           │
└──────────┴──────────────────────────┴─────────────────────────────┘
```

<div id="substringIndex">
  ## substringIndex
</div>

Добавленный в: v23.7.0

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

**Синтаксис**

```sql theme={null}
substringIndex(s, delim, count)
```

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

**Аргументы**

* `s` — Строка, из которой нужно извлечь подстроку. [`String`](/ru/reference/data-types/string)
* `delim` — Символ-разделитель. [`String`](/ru/reference/data-types/string)
* `count` — Количество вхождений разделителя, которое нужно учесть перед извлечением подстроки. Если `count` положительный, возвращается всё слева от последнего разделителя (считая слева). Если `count` отрицательный, возвращается всё справа от последнего разделителя (считая справа). [`UInt`](/ru/reference/data-types/int-uint) или [`Int`](/ru/reference/data-types/int-uint)

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

Возвращает подстроку строки `s` до `count`-го вхождения `delim`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT substringIndex('www.clickhouse.com', '.', 2)
```

```response title=Response theme={null}
┌─substringIndex('www.clickhouse.com', '.', 2)─┐
│ www.clickhouse                               │
└──────────────────────────────────────────────┘
```

<div id="substringIndexUTF8">
  ## substringIndexUTF8
</div>

Добавленный в: v23.7.0

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

**Синтаксис**

```sql theme={null}
substringIndexUTF8(s, delim, count)
```

**Аргументы**

* `s` — Строка, из которой извлекается подстрока. [`String`](/ru/reference/data-types/string)
* `delim` — Символ-разделитель. [`String`](/ru/reference/data-types/string)
* `count` — Количество вхождений разделителя, которое нужно отсчитать перед извлечением подстроки. Если `count` положительный, возвращается всё слева от последнего разделителя (при отсчёте слева). Если `count` отрицательный, возвращается всё справа от последнего разделителя (при отсчёте справа). [`UInt`](/ru/reference/data-types/int-uint) или [`Int`](/ru/reference/data-types/int-uint)

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

Возвращает подстроку `s` до `count`-го вхождения `delim`. [`String`](/ru/reference/data-types/string)

**Примеры**

**Пример UTF8**

```sql title=Query theme={null}
SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2)
```

```response title=Response theme={null}
www.straßen-in-europa
```

<div id="substringUTF8">
  ## substringUTF8
</div>

Добавленный в: v1.1.0

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

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

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

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

**Синтаксис**

```sql theme={null}
substringUTF8(s, offset[, length])
```

**Аргументы**

* `s` — Строка, из которой извлекается подстрока. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring) или [`Enum`](/ru/reference/data-types/enum)
* `offset` — Начальная позиция подстроки в `s`. [`Int`](/ru/reference/data-types/int-uint) или [`UInt`](/ru/reference/data-types/int-uint)
* `length` — Максимальная длина подстроки. Необязательный параметр. [`Int`](/ru/reference/data-types/int-uint) или [`UInt`](/ru/reference/data-types/int-uint)

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

Возвращает подстроку из `s` длиной `length` кодовых точек, начиная с кодовой точки с индексом `offset`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT 'Täglich grüßt das Murmeltier.' AS str, substringUTF8(str, 9), substringUTF8(str, 9, 5)
```

```response title=Response theme={null}
Täglich grüßt das Murmeltier.    grüßt das Murmeltier.    grüßt
```

<div id="toValidUTF8">
  ## toValidUTF8
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
toValidUTF8(s)
```

**Аргументы**

* `s` — Любая последовательность байтов, представленная объектом типа данных String. [`String`](/ru/reference/data-types/string)

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

Возвращает допустимую строку UTF-8. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b')
```

```response title=Response theme={null}
c
┌─toValidUTF8('a����b')─┐
│ a�b                   │
└───────────────────────┘
```

<div id="trimBoth">
  ## trimBoth
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
trimBoth(s[, trim_characters])
```

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

**Аргументы**

* `s` — Обрезаемая строка. [`String`](/ru/reference/data-types/string)
* `trim_characters` — Необязательно. Символы, которые нужно удалить. Если не указано, удаляются стандартные пробельные символы. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, у которой указанные символы удалены с обоих концов. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT trimBoth('$$ClickHouse$$', '$')
```

```response title=Response theme={null}
┌─trimBoth('$$⋯se$$', '$')─┐
│ ClickHouse               │
└──────────────────────────┘
```

<div id="trimLeft">
  ## trimLeft
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
trimLeft(input[, trim_characters])
```

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

**Аргументы**

* `input` — Строка, из которой удаляются символы. [`String`](/ru/reference/data-types/string)
* `trim_characters` — Необязательно. Символы, которые нужно удалить. Если не указано, удаляются распространённые пробельные символы. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, из которой указанные символы удалены слева. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT trimLeft('ClickHouse', 'Click');
```

```response title=Response theme={null}
┌─trimLeft('Cl⋯', 'Click')─┐
│ House                    │
└──────────────────────────┘
```

<div id="trimRight">
  ## trimRight
</div>

Добавленный в: v20.1.0

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

**Синтаксис**

```sql theme={null}
trimRight(s[, trim_characters])
```

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

**Аргументы**

* `s` — Строка, из которой нужно удалить символы. [`String`](/ru/reference/data-types/string)
* `trim_characters` — Необязательные символы для удаления. Если не указаны, удаляются обычные пробельные символы. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, у которой указанные символы удалены справа. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT trimRight('ClickHouse','House');
```

```response title=Response theme={null}
┌─trimRight('C⋯', 'House')─┐
│ Click                    │
└──────────────────────────┘
```

<div id="tryBase32Decode">
  ## tryBase32Decode
</div>

Добавленный в: v25.6.0

Принимает строку и декодирует её по схеме кодирования [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6).

**Синтаксис**

```sql theme={null}
tryBase32Decode(encoded)
```

**Аргументы**

* `encoded` — столбец String или константа, которую нужно декодировать. Если строка не является корректной строкой в кодировке Base32, то в случае ошибки возвращается пустая строка. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, содержащую декодированное значение аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT tryBase32Decode('IVXGG33EMVSA====');
```

```response title=Response theme={null}
┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Encoded                             │
└─────────────────────────────────────┘
```

<div id="tryBase58Decode">
  ## tryBase58Decode
</div>

Добавленный в: v22.10.0

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

**Синтаксис**

```sql theme={null}
tryBase58Decode(encoded[, expected_size])
```

**Аргументы**

* `encoded` — Столбец типа String или константа. Если строка некорректно закодирована в Base58, в случае ошибки возвращается пустая строка. [`String`](/ru/reference/data-types/string)
* `expected_size` — Необязательно. Ожидаемый размер декодированного значения в байтах. Если указано 32 или 64, используется оптимизированный декодер; для других значений используется универсальный декодер. [`UInt8, UInt16, UInt32, or UInt64`](/ru/reference/data-types/int-uint)

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

Возвращает строку с декодированным значением аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;
```

```response title=Response theme={null}
┌─res─────┬─res_invalid─┐
│ Encoded │             │
└─────────┴─────────────┘
```

<div id="tryBase64Decode">
  ## tryBase64Decode
</div>

Добавленный в: v18.16.0

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

**Синтаксис**

```sql theme={null}
tryBase64Decode(encoded)
```

**Аргументы**

* `encoded` — столбец `String` или константа для декодирования. Если строка не является корректной строкой в кодировке Base64, в случае ошибки возвращается пустая строка. [`String`](/ru/reference/data-types/string)

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

Возвращает строку, содержащую декодированное значение аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT tryBase64Decode('Y2xpY2tob3VzZQ==')
```

```response title=Response theme={null}
┌─tryBase64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse                          │
└─────────────────────────────────────┘
```

<div id="tryBase64URLDecode">
  ## tryBase64URLDecode
</div>

Добавленный в: v18.16.0

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

**Синтаксис**

```sql theme={null}
tryBase64URLDecode(encoded)
```

**Аргументы**

* `encoded` — столбец типа String или константа для декодирования. Если строка не является допустимой строкой в кодировке Base64, то в случае ошибки возвращается пустая строка. [`String`](/ru/reference/data-types/string)

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

Возвращает строку с декодированным значением аргумента. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
```

```response title=Response theme={null}
┌─tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com                               │
└──────────────────────────────────────────────────────┘
```

<div id="tryIdnaEncode">
  ## tryIdnaEncode
</div>

Добавленный в: v24.1.0

Возвращает доменное имя в представлении Unicode (UTF-8) по алгоритму ToUnicode в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA).
В случае ошибки возвращает пустую строку вместо того, чтобы генерировать исключение.

**Синтаксис**

```sql theme={null}
tryIdnaEncode(s)
```

**Аргументы**

* `s` — Входная строка. [`String`](/ru/reference/data-types/string)

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

Возвращает ASCII-представление входной строки в соответствии с механизмом IDNA для указанного входного значения либо пустую строку, если входное значение недопустимо. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT tryIdnaEncode('straße.münchen.de')
```

```response title=Response theme={null}
┌─tryIdnaEncode('straße.münchen.de')──┐
│ xn--strae-oqa.xn--mnchen-3ya.de     │
└─────────────────────────────────────┘
```

<div id="tryPunycodeDecode">
  ## tryPunycodeDecode
</div>

Добавленный в: v24.1.0

Как `punycodeDecode`, но возвращает пустую строку, если передана невалидная строка, закодированная в Punycode.

**Синтаксис**

```sql theme={null}
tryPunycodeDecode(s)
```

**Аргументы**

* `s` — строка, закодированная в Punycode. [`String`](/ru/reference/data-types/string)

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

Возвращает открытый текст входного значения или пустую строку, если входное значение недопустимо. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT tryPunycodeDecode('Mnchen-3ya')
```

```response title=Response theme={null}
┌─tryPunycodeDecode('Mnchen-3ya')─┐
│ München                         │
└─────────────────────────────────┘
```

<div id="upper">
  ## upper
</div>

Добавленный в: v1.1.0

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

**Синтаксис**

```sql theme={null}
upper(s)
```

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

**Аргументы**

* `s` — Строка, которую нужно преобразовать в верхний регистр. [`String`](/ru/reference/data-types/string)

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

Возвращает строку `s` в верхнем регистре. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT upper('clickhouse')
```

```response title=Response theme={null}
┌─upper('clickhouse')─┐
│ CLICKHOUSE          │
└─────────────────────┘
```

<div id="upperUTF8">
  ## upperUTF8
</div>

Добавленный в: v1.1.0

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

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

**Синтаксис**

```sql theme={null}
upperUTF8(s)
```

**Аргументы**

* `s` — строкового типа. [`String`](/ru/reference/data-types/string)

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

Значение типа `String`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT upperUTF8('München') AS Upperutf8
```

```response title=Response theme={null}
┌─Upperutf8─┐
│ MÜNCHEN   │
└───────────┘
```
