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

> Documentación sobre funciones de cadena

# Funciones para trabajar con cadenas

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>
    Available in version {minVersion} and later
  </div>;

Las funciones para [buscar](/es/reference/functions/regular-functions/string-search-functions) en cadenas y para [reemplazar](/es/reference/functions/regular-functions/string-replace-functions) en cadenas se describen por separado.

<Note>
  La documentación siguiente se genera a partir de la tabla del sistema `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

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

Introducido en: v20.1.0

Calcula la suma de comprobación CRC32 de una cadena mediante el polinomio CRC-32-IEEE 802.3 y el valor inicial `0xffffffff` (implementación de zlib).

**Sintaxis**

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

**Argumentos**

* `s` — Cadena para la que se calcula CRC32. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la suma de comprobación CRC32 de la cadena. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducida en: v20.1.0

Calcula la suma de comprobación CRC32 de una cadena utilizando el polinomio CRC-32-IEEE 802.3.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena para la que se calcula CRC32. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la suma de comprobación CRC32 de la cadena. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v20.1.0

Calcula la suma de comprobación CRC64 de una cadena utilizando el polinomio CRC-64-ECMA.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena para la que se calcula CRC64. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la suma de comprobación CRC64 de la cadena. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Añade el carácter `c` a la cadena `s` si `s` no está vacía y no termina con el carácter `c`.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)
* `c` — Carácter que se añade si no está presente. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena `s` con el carácter `c` añadido si `s` no termina en `c`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.11.0

Devuelve el punto de código ASCII del primer carácter de la cadena `s` como un valor `Int32`.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el código ASCII del primer carácter. Si `s` está vacío, el resultado es `0`. Si el primer carácter no es un carácter ASCII o no pertenece al rango de suplemento Latin-1 de UTF-16, el resultado no está definido. [`Int32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.6.0

Decodifica una cadena en [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) (RFC 4648).
Si la cadena no es una codificación Base32 válida, se lanza una excepción.

**Sintaxis**

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

**Argumentos**

* `encoded` — columna de tipo String o constante. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.6.0

Codifica una cadena en [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6).

**Sintaxis**

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

**Argumentos**

* `plaintext` — texto plano que se va a codificar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor codificado del argumento. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.7.0

Decodifica una cadena [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3).
Si la cadena no es una codificación Base58 válida, se lanza una excepción.
Se puede proporcionar un segundo argumento opcional, `expected_size`, para seleccionar un decodificador optimizado de tamaño fijo.
Actualmente, los valores admitidos son 32 y 64. Para otros valores, se utiliza el decodificador genérico.
Cuando se selecciona el decodificador optimizado pero la entrada no puede decodificarse en exactamente esa cantidad de bytes,
la función lanza una excepción (o devuelve una cadena vacía en `tryBase58Decode`).

**Sintaxis**

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

**Argumentos**

* `encoded` — Columna `String` o constante para decodificar. [`String`](/es/reference/data-types/string)
* `expected_size` — Opcional. Tamaño esperado del valor decodificado en bytes. Cuando es 32 o 64, se usa un decodificador optimizado; para otros valores, se usa el decodificador genérico. [`UInt8, UInt16, UInt32, or UInt64`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una cadena con el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.7.0

Codifica una cadena en [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html).

**Sintaxis**

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

**Argumentos**

* `plaintext` — texto plano que se va a codificar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor codificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v18.16.0

Decodifica una cadena a partir de su representación en [Base64](https://en.wikipedia.org/wiki/Base64), de acuerdo con RFC 4648.
Lanza una excepción en caso de error.

**Sintaxis**

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

**Alias**: `FROM_BASE64`

**Argumentos**

* `encoded` — Columna `String` o constante que se debe decodificar. Si la cadena no está codificada en Base64 de forma válida, se genera una excepción. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena decodificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v18.16.0

Codifica una cadena en formato [Base64](https://en.wikipedia.org/wiki/Base64), según la RFC 4648.

**Sintaxis**

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

**Alias**: `TO_BASE64`

**Argumentos**

* `plaintext` — Columna o constante de texto plano que se va a decodificar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor codificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v24.6.0

Decodifica una cadena desde su representación en [Base64](https://en.wikipedia.org/wiki/Base64) usando un alfabeto seguro para URL, de acuerdo con la RFC 4648.
Lanza una excepción en caso de error.

**Sintaxis**

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

**Argumentos**

* `encoded` — Columna String o constante para codificar. Si la cadena no está codificada en Base64 de forma válida, se lanza una excepción. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v18.16.0

Codifica una cadena utilizando la representación [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4) (RFC 4648) con un alfabeto apto para URL.

**Sintaxis**

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

**Argumentos**

* `plaintext` — Columna o constante de texto plano para codificar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena con el valor codificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Extrae la parte final de una cadena tras la última barra o barra invertida.
Esta función se utiliza a menudo para extraer el nombre del archivo de una ruta.

**Sintaxis**

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

**Argumentos**

* `expr` — Una expresión de tipo cadena. Las barras invertidas deben escaparse. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la parte final de la cadena de entrada después de la última barra o barra invertida. Si la cadena de entrada termina con una barra o una barra invertida, la función devuelve una cadena vacía. Devuelve la cadena original si no contiene barras ni barras invertidas. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Extraer el nombre de archivo de una ruta de 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                               │
└────────────────────────┴────────────────────────────────────┘
```

**Extraer el nombre de archivo de una ruta de 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                                   │
└────────────────────────┴────────────────────────────────────────┘
```

**Cadena sin separadores de ruta**

```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>

Introducido en: v23.9.0

Calcula la [distancia de Hamming](https://en.wikipedia.org/wiki/Hamming_distance) entre dos cadenas de bytes.

**Sintaxis**

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

**Alias**: `mismatches`

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la distancia de Hamming entre ambas cadenas. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v26.3.0

Aplica el case folding de Unicode a una cadena UTF-8, convirtiéndola en una forma normalizada similar a minúsculas adecuada para comparaciones sin distinción entre mayúsculas y minúsculas.

Aplica el case folding estándar de Unicode. Conserva los caracteres de compatibilidad que no se ven afectados por el case folding
(p. ej., números romanos, números con círculo), pero tenga en cuenta que algunas ligaduras, como `ﬃ`, siguen descomponiéndose porque el propio case folding de Unicode las expande.

**Sintaxis**

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

**Argumentos**

* `str` — Cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Cadena UTF-8 con normalización de mayúsculas y minúsculas. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Normalización básica de mayúsculas y minúsculas**

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

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

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

Introducido en: v25.2.0

Compara dos cadenas en orden lexicográfico.

**Sintaxis**

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

**Argumentos**

* `s1` — La primera cadena que se comparará. [`String`](/es/reference/data-types/string)
* `s2` — La segunda cadena que se comparará. [`String`](/es/reference/data-types/string)
* `s1_offset` — La posición (indexada desde cero) en `s1` a partir de la cual comienza la comparación. [`UInt*`](/es/reference/data-types/int-uint)
* `s2_offset` — La posición (índice basado en cero) en `s2` a partir de la cual comienza la comparación. [`UInt*`](/es/reference/data-types/int-uint)
* `num_bytes` — El número máximo de bytes que se comparará en ambas cadenas. Si `s1_offset` (o `s2_offset`) + `num_bytes` supera el final de una cadena de entrada, `num_bytes` se reducirá en consecuencia. [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve:

* `-1` si `s1`\[`s1_offset` : `s1_offset` + `num_bytes`] \< `s2`\[`s2_offset` : `s2_offset` + `num_bytes`].
* `0` si `s1`\[`s1_offset` : `s1_offset` + `num_bytes`] = `s2`\[`s2_offset` : `s2_offset` + `num_bytes`].
* `1` si `s1`\[`s1_offset` : `s1_offset` + `num_bytes`] > `s2`\[`s2_offset` : `s2_offset` + `num_bytes`].
  [`Int8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Concatena los argumentos especificados.

Los argumentos que no son de tipo [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring) se convierten en cadenas mediante su serialización predeterminada.
Como esto reduce el rendimiento, no se recomienda usar argumentos distintos de String/FixedString.

**Sintaxis**

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

**Argumentos**

* `s1, s2, ...` — Cualquier cantidad de valores de cualquier tipo. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve la cadena creada al concatenar los argumentos. Si alguno de los argumentos es `NULL`, la función devuelve `NULL`. Si no hay argumentos, devuelve una cadena vacía. [`Nullable(String)`](/es/reference/data-types/nullable)

**Ejemplos**

**Concatenación de cadenas**

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

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

**Concatenación de números**

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

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

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

Introducido en: v1.1.0

Como [`concat`](#concat), pero asume que `concat(s1, s2, ...) → sn` es inyectiva,
es decir, que devuelve resultados distintos para argumentos distintos.

Puede utilizarse para optimizar `GROUP BY`.

**Sintaxis**

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

**Argumentos**

* `s1, s2, ...` — Cualquier cantidad de valores de tipo arbitrario. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)

**Valor devuelto**

Devuelve la cadena resultante de concatenar los argumentos. Si alguno de los valores de los argumentos es `NULL`, la función devuelve `NULL`. Si no se pasa ningún argumento, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Optimización de 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>

Introducido en: v22.12.0

Concatena las cadenas proporcionadas, separadas por el separador especificado.

**Sintaxis**

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

**Aliases**: `concat_ws`

**Argumentos**

* `sep` — El separador que se usará. [`const String`](/es/reference/data-types/string) o [`const FixedString`](/es/reference/data-types/fixedstring)
* `exp1, exp2, ...` — Expresiones que se concatenarán. Los argumentos que no sean de tipo `String` o `FixedString` se convierten en cadenas mediante su serialización predeterminada. Como esto reduce el rendimiento, no se recomienda usar argumentos distintos de `String`/`FixedString`. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve la cadena creada al concatenar los argumentos. Si alguno de los valores de los argumentos es `NULL`, la función devuelve `NULL`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.12.0

Como [`concatWithSeparator`](#concatWithSeparator), pero asume que `concatWithSeparator(sep[,exp1, exp2, ... ]) → result` es inyectiva.
Se considera inyectiva una función si devuelve resultados distintos para argumentos distintos.

Puede usarse para optimizar `GROUP BY`.

**Sintaxis**

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

**Argumentos**

* `sep` — El separador que se va a utilizar. [`const String`](/es/reference/data-types/string) o [`const FixedString`](/es/reference/data-types/fixedstring)
* `exp1, exp2, ...` — Expresión que se va a concatenar. Los argumentos que no sean de tipo `String` o `FixedString` se convierten en cadenas mediante su serialización predeterminada. Como esto reduce el rendimiento, no se recomienda usar argumentos que no sean `String`/`FixedString`. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)

**Valor devuelto**

Devuelve la cadena creada al concatenar los argumentos. Si alguno de los valores de los argumentos es `NULL`, la función devuelve `NULL`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v25.10.0

Convierte números entre distintas bases numéricas.

La función convierte un número de una base a otra. Admite bases de 2 a 36.
Para bases superiores a 10, se usan las letras A-Z (sin distinguir entre mayúsculas y minúsculas) para representar los dígitos del 10 al 35.

Esta función es compatible con la función CONV() de MySQL.

**Sintaxis**

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

**Argumentos**

* `number` — El número que se va a convertir. Puede ser una cadena o un tipo numérico. - `from_base` — La base de origen (2-36). Debe ser un entero. - `to_base` — La base de destino (2-36). Debe ser un entero.

**Valor devuelto**

Representación textual del número en la base de destino.

**Ejemplos**

**Convertir de decimal a binario**

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

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

**Convertir de hexadecimal a decimal**

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

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

**Conversión con número negativo**

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

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

**Convertir de binario a octal**

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

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

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

Introducido en: v1.1.0

Devuelve la cadena `s` convertida desde la codificación `from` a la codificación `to`.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)
* `from` — Codificación de caracteres de origen. [`String`](/es/reference/data-types/string)
* `to` — Codificación de caracteres de destino. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena `s` convertida de la codificación `from` a `to`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.1.0

Calcula la [distancia de Damerau-Levenshtein](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) entre dos cadenas de bytes.

**Sintaxis**

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

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la distancia de Damerau-Levenshtein entre las dos cadenas. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v23.9.0

Decodifica las entidades HTML de una cadena y las convierte en sus caracteres correspondientes.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena que contiene entidades HTML que se deben decodificar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena con las entidades HTML decodificadas. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.2.0

Decodifica las entidades XML de una cadena en sus caracteres correspondientes.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena que contiene entidades XML que se deben decodificar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena proporcionada con las entidades XML decodificadas. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v23.9.0

Calcula la [distancia de edición](https://en.wikipedia.org/wiki/Edit_distance) entre dos cadena de bytes.

**Sintaxis**

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

**Alias**: `levenshteinDistance`

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la distancia de edición entre ambas cadenas. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v24.6.0

Calcula la [distancia de edición](https://en.wikipedia.org/wiki/Edit_distance) entre dos cadenas en UTF-8.

**Sintaxis**

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

**Alias**: `levenshteinDistanceUTF8`

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la distancia de edición entre las dos cadenas UTF-8. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.1.0

Escapa caracteres para insertar una cadena en un nodo de texto XML o en un atributo.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena que se debe escapar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena escapada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Comprueba si una cadena termina con el sufijo indicado.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena a comprobar. [`String`](/es/reference/data-types/string)
* `suffix` — Sufijo a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` termina con `suffix`; en caso contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.10.0

Verifica si una cadena termina con el sufijo especificado sin distinguir entre mayúsculas y minúsculas.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena que se va a comprobar. [`String`](/es/reference/data-types/string)
* `suffix` — Sufijo sin distinguir entre mayúsculas y minúsculas que se va a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` termina con el `suffix` sin distinguir entre mayúsculas y minúsculas; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.10.0

Devuelve si la cadena `s` termina con el `suffix` sin distinguir entre mayúsculas y minúsculas.
Asume que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta condición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

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

**Argumentos**

* `s` — String que se debe comprobar. [`String`](/es/reference/data-types/string)
* `suffix` — Sufijo que se debe comprobar sin distinguir entre mayúsculas y minúsculas. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` termina con el `suffix` sin distinguir entre mayúsculas y minúsculas; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v23.8.0

Devuelve si la cadena `s` termina con suffix.
Asume que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

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

**Argumentos**

* `s` — String que se va a comprobar. [`String`](/es/reference/data-types/string)
* `suffix` — Sufijo que se va a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` termina con `suffix`; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.3.0

Extrae el contenido de texto de HTML o XHTML.

Esta función elimina las etiquetas HTML, los comentarios y los elementos script/style, y deja únicamente el contenido de texto. Gestiona lo siguiente:

* La eliminación de todas las etiquetas HTML/XML
* La eliminación de comentarios (`{/* */}`)
* La eliminación de los elementos script y style junto con su contenido
* El procesamiento de secciones CDATA (copiadas literalmente)
* El tratamiento y la normalización correctos de los espacios en blanco

Nota: las entidades HTML no se decodifican y deben procesarse con una función aparte si es necesario.

**Sintaxis**

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

**Argumentos**

* `html` — Cadena con contenido HTML del que se extrae el texto. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el contenido de texto extraído con espacios en blanco normalizados. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v23.7.0

Devuelve la primera línea de una cadena multilínea.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la primera línea de la cadena de entrada o la cadena completa si no hay separadores de línea. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.1.0

Devuelve la representación Unicode (UTF-8) (algoritmo ToUnicode) de un nombre de dominio según el mecanismo [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA).
En caso de error (por ejemplo, porque la entrada no es válida), se devuelve la cadena de entrada.
Tenga en cuenta que el uso repetido de [`idnaEncode()`](#idnaEncode) y [`idnaDecode()`](#idnaDecode) no devuelve necesariamente la cadena original debido a la normalización de mayúsculas y minúsculas.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una representación Unicode (UTF-8) de la cadena de entrada según el mecanismo IDNA correspondiente al valor de entrada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.1.0

Devuelve la representación ASCII (algoritmo ToASCII) de un nombre de dominio según el mecanismo [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA).
La cadena de entrada debe estar codificada en UTF y poder convertirse en una cadena ASCII; de lo contrario, se lanza una excepción.

<Note>
  No se realiza ninguna decodificación de porcentajes ni se eliminan tabulaciones, espacios o caracteres de control.
</Note>

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una representación ASCII de la cadena de entrada conforme al mecanismo IDNA. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v23.7.0

Convierte la primera letra de cada palabra en mayúscula y el resto en minúsculas.
Las palabras son secuencias de caracteres alfanuméricos separadas por caracteres no alfanuméricos.

<Note>
  Como `initcap` solo convierte a mayúscula la primera letra de cada palabra, es posible que observe un comportamiento inesperado en palabras que contienen apóstrofos o letras mayúsculas.
  Este es un comportamiento conocido y actualmente no está previsto corregirlo.
</Note>

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `s` con la primera letra de cada palabra en mayúscula. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

**Ejemplo del comportamiento conocido con palabras que contienen apóstrofos o letras mayúsculas**

```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>

Introducido en: v23.7.0

Al igual que [`initcap`](#initcap), `initcapUTF8` convierte la primera letra de cada palabra en mayúscula y el resto en minúsculas.
Se asume que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado no está definido.

<Note>
  Esta función no detecta el idioma; por ejemplo, para el turco, el resultado podría no ser exactamente correcto (i/İ vs. i/I).
  Si la longitud de la secuencia de bytes UTF-8 difiere entre las formas en mayúsculas y minúsculas de un punto de código, el resultado puede ser incorrecto para ese punto de código.
</Note>

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `s` con la primera letra de cada palabra en mayúscula. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.9.0

Devuelve 1 si el valor de entrada de tipo String o FixedString contiene solo bytes ASCII (0x00–0x7F); en caso contrario, 0. Está optimizado para el caso positivo (la entrada *es* ASCII válida).

**Sintaxis**

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

**Alias**: `isASCII`

**Argumentos**

* Ninguno.

**Valor devuelto**

**Ejemplos**

**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>

Introducido en: v20.1.0

Comprueba si la secuencia de bytes forma un texto válido codificado en UTF-8.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena cuya validez de codificación UTF-8 se comprobará. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si el conjunto de bytes constituye texto válido codificado en UTF-8; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.1.0

Calcula la [similitud de Jaro](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) entre dos cadenas de bytes.

**Sintaxis**

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

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la similitud Jaro entre ambas cadenas. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v24.1.0

Calcula la [similitud de Jaro-Winkler](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance) entre dos cadenas de bytes.

**Sintaxis**

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

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la similitud de Jaro-Winkler entre ambas cadenas. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.1.0

Devuelve una subcadena de la cadena `s` con un `offset` especificado, a partir de la izquierda.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena a partir de la cual se calcula una subcadena. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)
* `offset` — La cantidad de bytes de desplazamiento. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve:

* Para `offset` positivo, una subcadena de `s` de `offset` bytes, empezando por la izquierda de la cadena.
* Para `offset` negativo, una subcadena de `s` de `length(s) - |offset|` bytes, empezando por la izquierda de la cadena.
* Una cadena vacía si `length` es `0`.
  [`String`](/es/reference/data-types/string)

**Ejemplos**

**Desplazamiento positivo**

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

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

**Offset negativo**

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

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

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

Introducido en: v21.8.0

Rellena una cadena por la izquierda con espacios o con una cadena especificada (varias veces, si es necesario) hasta que la cadena resultante alcance la `length` especificada.

**Sintaxis**

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

**Alias**: `lpad`

**Argumentos**

* `string` — Cadena de entrada que debe rellenarse. [`String`](/es/reference/data-types/string)
* `length` — Longitud de la cadena resultante. Si el valor es menor que la longitud de la cadena de entrada, esta se acorta a `length` caracteres. [`(U)Int*`](/es/reference/data-types/int-uint)
* `pad_string` — Opcional. Cadena utilizada para rellenar la cadena de entrada. Si no se especifica, la cadena de entrada se rellena con espacios. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena rellenada por la izquierda con la longitud indicada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.8.0

Rellena una cadena UTF-8 por la izquierda con espacios o con una cadena especificada (repetida varias veces, si es necesario) hasta que la cadena resultante alcance la longitud indicada.
A diferencia de [`leftPad`](#leftPad), que mide la longitud de la cadena en bytes, aquí la longitud de la cadena se mide en puntos de código.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena de entrada que se debe rellenar. [`String`](/es/reference/data-types/string)
* `length` — La longitud de la cadena resultante. Si el valor es menor que la longitud de la cadena de entrada, esta se acorta a `length` caracteres. [`(U)Int*`](/es/reference/data-types/int-uint)
* `pad_string` — Opcional. La cadena con la que se rellena la cadena de entrada. Si no se especifica, la cadena de entrada se rellena con espacios. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena rellenada por la izquierda con la longitud indicada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.1.0

Devuelve una subcadena de una cadena `s` codificada en UTF-8, con un `offset` especificado desde la izquierda.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena codificada en UTF-8 a partir de la cual se calcula una subcadena. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)
* `offset` — El desplazamiento en bytes. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve:

* Para un `offset` positivo, una subcadena de `s` de `offset` bytes, empezando desde la izquierda de la cadena.\n"
* Para un `offset` negativo, una subcadena de `s` de `length(s) - |offset|` bytes, empezando desde la izquierda de la cadena.\n"
* Una cadena vacía si `length` es 0.
  [`String`](/es/reference/data-types/string)

**Ejemplos**

**Desplazamiento positivo**

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

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

**Offset negativo**

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

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

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

Introducido en: v1.1.0

Devuelve la longitud de una cadena en puntos de código Unicode en lugar de en bytes o caracteres.
Supone que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

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

**Alias**: `CHARACTER_LENGTH`, `CHAR_LENGTH`

**Argumentos**

* `s` — Cadena que contiene texto codificado en UTF-8 válido. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Longitud de la cadena `s` en puntos de código Unicode. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Convierte una cadena ASCII en minúsculas.

**Sintaxis**

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

**Alias**: `lcase`

**Argumentos**

* `s` — Una cadena para convertir a minúsculas. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `s` en minúsculas. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Convierte una cadena a minúsculas, suponiendo que contiene texto válido codificado en UTF-8. Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

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

**Argumentos**

* `input` — Cadena de entrada que se convierte a minúsculas. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena en minúsculas. [`String`](/es/reference/data-types/string)

**Ejemplos**

**primero**

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

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

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

Introducido en: v26.3.0

La función se utiliza para realizar una ordenación natural.

**Sintaxis**

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

**Alias**: `NATURAL_SORT_KEY`

**Argumentos**

* `s` — Una cadena para convertirla en una clave de ordenación natural. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena con la clave de ordenación natural de `s`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducida en: v21.11.0

Normaliza una cadena UTF-8 de acuerdo con la [forma de normalización NFC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Sintaxis**

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

**Argumentos**

* `str` — cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la forma normalizada NFC de la cadena UTF-8. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT
'é' AS original, -- e + acento agudo combinado (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>

Introducido en: v21.11.0

Normaliza una cadena UTF-8 según la [forma de normalización NFD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Sintaxis**

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

**Argumentos**

* `str` — cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la forma normalizada NFD de la cadena en UTF-8. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT
    'é' AS original, -- é (U+00E9)
    length(original),
    normalizeUTF8NFD('é') AS nfd_normalized, -- e + acento combinatorio (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>

Introducido en: v21.11.0

Normaliza una cadena en UTF-8 según la [forma de normalización NFKC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Sintaxis**

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

**Argumentos**

* `str` — cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la forma NFKC normalizada de la cadena UTF-8. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT
    '① ② ③' AS original,                            -- Caracteres de números en círculo
    normalizeUTF8NFKC('① ② ③') AS nfkc_normalized;  -- Se convierte en 1 2 3
```

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

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

Introducido en: v26.3.0

Normaliza una cadena UTF-8 según la [forma de normalización NFKC\_Casefold](https://unicode.org/reports/tr44/#NFKC_Casefold), que aplica la normalización NFKC y, a continuación, realiza el case folding.
Esto resulta útil para la comparación de identificadores sin distinción entre mayúsculas y minúsculas.

**Sintaxis**

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

**Argumentos**

* `str` — cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la forma normalizada NFKC\_Casefold de la cadena codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.11.0

Normaliza una cadena UTF-8 de acuerdo con la [forma de normalización NFKD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms).

**Sintaxis**

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

**Argumentos**

* `str` — Cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la forma normalizada NFKD de la cadena codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT
    'H₂O²' AS original,                            -- H + subíndice 2 + O + superíndice 2
    normalizeUTF8NFKD('H₂O²') AS nfkd_normalized;  -- Convierte a H 2 O 2
```

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

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

Introducido en: v24.1.0

Devuelve el texto sin formato codificado en UTF-8 de una cadena codificada en [Punycode](https://en.wikipedia.org/wiki/Punycode).
Si no se proporciona una cadena válida codificada en Punycode, se genera una excepción.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena codificada en Punycode. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el texto sin formato del valor de entrada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v24.1.0

Devuelve la representación en [Punycode](https://en.wikipedia.org/wiki/Punycode) de una cadena.
La cadena debe estar codificada en UTF-8; de lo contrario, el comportamiento no está definido.

**Sintaxis**

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

**Argumentos**

* `s` — Valor de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la representación en Punycode del valor de entrada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v23.2.0

Extrae la primera cadena de `haystack` que coincide con el patrón de expresión regular y corresponde al índice del grupo de la expresión regular.

**Sintaxis**

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

**Alias**: `REGEXP_EXTRACT`

**Argumentos**

* `haystack` — String, donde se buscará la coincidencia con el patrón regexp. [`String`](/es/reference/data-types/string)
* `pattern` — String, expresión regular. `pattern` puede contener varios grupos regexp; `index` indica qué grupo de la expresión regular se extraerá. Un índice de 0 significa que se extrae la coincidencia de la expresión regular completa. [`const String`](/es/reference/data-types/string)
* `index` — Opcional. Un número entero mayor o igual que 0, con valor predeterminado 1. Representa qué grupo de la expresión regular se extraerá. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una coincidencia como cadena [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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+)');
```

```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+)')─┐
│ 100                                          │ 200                                          │ 100-200                                      │ 100                                       │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┘
```

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

Introducido en: v26.5.0

Devuelve la posición en bytes (basada en 1) de la coincidencia número `occurrence` de `pattern` en `haystack`, comenzando la búsqueda en la posición en bytes `position`.

Si `return_option` es 0 (valor predeterminado), devuelve la posición del primer byte de la coincidencia. Si es 1, devuelve la posición del primer byte *después* de la coincidencia.

Si `subexpression` es mayor que 0, devuelve la posición del grupo de captura correspondiente en lugar de la coincidencia completa.

Devuelve 0 si no se encuentra ninguna coincidencia o si el grupo de captura solicitado no participó en la coincidencia.

Se proporciona por compatibilidad con `regexp_instr` de PostgreSQL (también disponible con ese alias). Ten en cuenta que las posiciones se basan en bytes, en consonancia con otras funciones de expresiones regulares de ClickHouse; `regexp_instr` de PostgreSQL se basa en caracteres.

**Sintaxis**

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

**Alias**: `regexpInstr`, `regexp_instr`

**Argumentos**

* `haystack` — Cadena en la que buscar. [`String`](/es/reference/data-types/string)
* `pattern` — Patrón de expresión regular. [`const String`](/es/reference/data-types/string)
* `position` — Opcional. Posición en bytes, basada en 1, desde la que se inicia la búsqueda. Valor predeterminado: 1. [`(U)Int*`](/es/reference/data-types/int-uint)
* `occurrence` — Opcional. Qué coincidencia devolver. Valor predeterminado: 1. [`(U)Int*`](/es/reference/data-types/int-uint)
* `return_option` — Opcional. 0 devuelve la posición de inicio de la coincidencia; 1 devuelve la posición inmediatamente posterior a la coincidencia. Valor predeterminado: 0. [`(U)Int*`](/es/reference/data-types/int-uint)
* `flags` — Opcional. Banderas de regex. Compatibles: `i` (sin distinción entre mayúsculas y minúsculas), `c` (con distinción entre mayúsculas y minúsculas), `m`/`n` (anclajes multilínea), `s` (el punto coincide con el salto de línea). Valor predeterminado: vacío. [`const String`](/es/reference/data-types/string)
* `subexpression` — Opcional. Índice del grupo de captura cuya posición se devolverá. 0 significa la coincidencia completa. Valor predeterminado: 0. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve la posición en bytes de la coincidencia, o 0 si no se encuentra. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Uso básico**

```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>

Introducido en: v26.3.0

Elimina las marcas diacríticas (acentos) de una cadena UTF-8 al descomponer los caracteres mediante NFD,
eliminar las marcas de combinación (categoría Unicode Mn) y volver a componerlos mediante NFC.

**Sintaxis**

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

**Alias**: `removeAccentsUTF8`

**Argumentos**

* `str` — cadena de entrada codificada en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Cadena UTF-8 sin diacríticos. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Eliminación básica de acentos**

```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>

Introducido en: v20.1.0

Concatena una cadena consigo misma tantas veces como se indique.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena que se debe repetir. [`String`](/es/reference/data-types/string)
* `n` — El número de veces que se debe repetir la cadena. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Una cadena que contiene `s` repetida `n` veces. Si `n` es negativo, la función devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT repeat('abc', 10)
```

```response title=Response theme={null}
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
```

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

Introducido en: v1.1.0

Invierte una secuencia de puntos de código Unicode en una cadena.
Supone que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena que contiene texto válido codificado en UTF-8. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena con la secuencia de puntos de código Unicode invertida. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.1.0

Devuelve una subcadena de la cadena `s` con un `offset` especificado a partir de la derecha.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena a partir de la cual se calculará una subcadena. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)
* `offset` — El número de bytes de desplazamiento. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve:

* Para un `offset` positivo, una subcadena de `s` de `offset` bytes, empezando por la derecha de la cadena.
* Para un `offset` negativo, una subcadena de `s` de `length(s) - |offset|` bytes, empezando por la derecha de la cadena.
* Una cadena vacía si `length` es `0`.
  [`String`](/es/reference/data-types/string)

**Ejemplos**

**Desplazamiento positivo**

```sql title=Query theme={null}
SELECT right('Hello', 3)
```

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

**Offset negativo**

```sql title=Query theme={null}
SELECT right('Hello', -3)
```

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

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

Introducido en: v21.8.0

Rellena una cadena por la derecha con espacios o con una cadena especificada (repitiéndola varias veces, si es necesario) hasta que la cadena resultante alcance la `length` especificada.

**Sintaxis**

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

**Alias**: `rpad`

**Argumentos**

* `string` — Cadena de entrada que se debe rellenar. [`String`](/es/reference/data-types/string)
* `length` — La longitud de la cadena resultante. Si el valor es menor que la longitud de la cadena de entrada, esta se acorta a `length` caracteres. [`(U)Int*`](/es/reference/data-types/int-uint)
* `pad_string` — Opcional. La cadena con la que se rellena la cadena de entrada. Si no se especifica, la cadena de entrada se rellena con espacios. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena rellenada por la derecha con la longitud especificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.8.0

Rellena la cadena por la derecha con espacios o con una cadena especificada (varias veces, si es necesario) hasta que la cadena resultante alcance la longitud indicada.
A diferencia de [`rightPad`](#rightPad), que mide la longitud de la cadena en bytes, aquí la longitud de la cadena se mide en puntos de código.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena de entrada que se debe rellenar. [`String`](/es/reference/data-types/string)
* `length` — La longitud de la cadena resultante. Si el valor es menor que la longitud de la cadena de entrada, esta se acorta a `length` caracteres. [`(U)Int*`](/es/reference/data-types/int-uint)
* `pad_string` — Opcional. La cadena con la que se rellena la cadena de entrada. Si no se especifica, la cadena de entrada se rellena con espacios. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena de la longitud indicada, rellenada por la derecha. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)
```

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

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

Introducido en: v22.1.0

Devuelve una subcadena de la cadena `s`, codificada en UTF-8, con un `offset` especificado desde la derecha.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena codificada en UTF-8 de la que se calcula una subcadena. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)
* `offset` — El número de bytes del desplazamiento. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve:

* Para `offset` positivo, una subcadena de `s` de `offset` bytes, empezando por la derecha de la cadena.
* Para `offset` negativo, una subcadena de `s` de `length(s) - |offset|` bytes, empezando por la derecha de la cadena.
* Una cadena vacía si `length` es `0`.
  [`String`](/es/reference/data-types/string)

**Ejemplos**

**Desplazamiento positivo**

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

```response title=Response theme={null}
ивет
```

**Desplazamiento negativo**

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

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

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

Introducido en: v23.4.0

Devuelve el [código Soundex](https://en.wikipedia.org/wiki/Soundex) de una cadena.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el código Soundex de la cadena de entrada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT soundex('aksel')
```

```response title=Response theme={null}
┌─soundex('aksel')─┐
│ A240             │
└──────────────────┘
```

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

Introducido en: v23.5.0

Concatena un espacio (` `) consigo mismo tantas veces como se indique.

**Sintaxis**

```sql theme={null}
space(n)
```

**Argumentos**

* `n` — El número de veces que se repite el carácter de espacio. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una cadena que contiene un espacio repetido `n` veces. Si `n <= 0`, la función devuelve la cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v25.5.0

Encuentra todas las subcadenas de una cadena dada que tengan una longitud de al menos `n`,
donde los hashes de los (n-1)-gramas en los extremos de la subcadena
son estrictamente mayores que los de cualquier (n-1)-grama dentro de ella.
Usa `CRC32` como función hash.

**Sintaxis**

```sql theme={null}
sparseGrams(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
```

**Argumentos**

* `s` — Una cadena de entrada. [`String`](/es/reference/data-types/string)
* `min_ngram_length` — Opcional. La longitud mínima del ngrama extraído. El valor predeterminado, que también es el mínimo, es 3. [`UInt*`](/es/reference/data-types/int-uint)
* `max_ngram_length` — Opcional. La longitud máxima del ngrama extraído. El valor predeterminado es 100. No debe ser menor que `min_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)
* `min_cutoff_length` — Opcional. Si se especifica, solo se devuelven n-gramas cuya longitud sea mayor o igual que `min_cutoff_length`. El valor predeterminado es el mismo que `min_ngram_length`. No debe ser menor que `min_ngram_length` ni mayor que `max_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un array de subcadenas seleccionadas. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v25.5.0

Encuentra los valores hash de todas las subcadenas de una cadena dada que tengan una longitud de al menos `n`,
donde los valores hash de los ngramas de longitud `n-1` en los bordes de la subcadena
sean estrictamente mayores que los de cualquier ngrama de longitud `n-1` dentro de la subcadena.
Usa `CRC32` como función hash.

**Sintaxis**

```sql theme={null}
sparseGramsHashes(s[, min_ngram_length, max_ngram_length])
```

**Argumentos**

* `s` — Una cadena de entrada. [`String`](/es/reference/data-types/string)
* `min_ngram_length` — Opcional. La longitud mínima del ngrama extraído. El valor predeterminado y mínimo es 3. [`UInt*`](/es/reference/data-types/int-uint)
* `max_ngram_length` — Opcional. La longitud máxima del ngrama extraído. El valor predeterminado es 100. No debe ser inferior a `min_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)
* `min_cutoff_length` — Opcional. Si se especifica, solo se devuelven los ngramas con una longitud mayor o igual que `min_cutoff_length`. El valor predeterminado es el mismo que `min_ngram_length`. No debe ser inferior a `min_ngram_length` ni superior a `max_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un array de hash CRC32 de las subcadenas seleccionadas. [`Array(UInt32)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v25.5.0

Encuentra los hashes de todas las subcadenas de una cadena UTF-8 dada con una longitud de al menos `n`, donde los hashes de los (n-1)-gramas en los bordes de la subcadena son estrictamente mayores que los de cualquier (n-1)-grama dentro de la subcadena.
Espera una cadena UTF-8 y lanza una excepción en caso de secuencia UTF-8 no válida.
Usa `CRC32` como función hash.

**Sintaxis**

```sql theme={null}
sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length])
```

**Argumentos**

* `s` — Una cadena de entrada. [`String`](/es/reference/data-types/string)
* `min_ngram_length` — Opcional. La longitud mínima del ngrama extraído. El valor predeterminado y mínimo es 3. [`UInt*`](/es/reference/data-types/int-uint)
* `max_ngram_length` — Opcional. La longitud máxima del ngrama extraído. El valor predeterminado es 100. No debe ser inferior a `min_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)
* `min_cutoff_length` — Opcional. Si se especifica, solo se devuelven n-grams con una longitud igual o mayor que `min_cutoff_length`. El valor predeterminado es el mismo que `min_ngram_length`. No debe ser inferior a `min_ngram_length` ni superior a `max_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un Array de hashes CRC32 de las subcadenas UTF-8 seleccionadas. [`Array(UInt32)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT sparseGramsHashesUTF8('алиса', 3)
```

```response title=Response theme={null}
┌─sparseGramsHashesUTF8('алиса', 3)─┐
│ [4178533925,3855635300,561830861] │
└───────────────────────────────────┘
```

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

Introducido en: v25.5.0

Encuentra todas las subcadenas de una cadena UTF-8 dada que tengan una longitud de al menos `n`, donde los valores hash de los (n-1)-gramas en los extremos de la subcadena son estrictamente mayores que los de cualquier (n-1)-grama dentro de la subcadena.
Espera una cadena UTF-8 y genera una excepción si la secuencia UTF-8 no es válida.
Usa `CRC32` como función hash.

**Sintaxis**

```sql theme={null}
sparseGramsUTF8(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
```

**Argumentos**

* `s` — Una cadena de entrada. [`String`](/es/reference/data-types/string)
* `min_ngram_length` — Opcional. La longitud mínima del n-grama extraído. El valor predeterminado y mínimo es 3. [`UInt*`](/es/reference/data-types/int-uint)
* `max_ngram_length` — Opcional. La longitud máxima del n-grama extraído. El valor predeterminado es 100. No debe ser inferior a `min_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)
* `min_cutoff_length` — Opcional. Si se especifica, solo se devuelven los n-gramas con una longitud mayor o igual que `min_cutoff_length`. El valor predeterminado es el mismo que `min_ngram_length`. No debe ser inferior a `min_ngram_length` ni superior a `max_ngram_length`. [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un array de subcadenas UTF-8 seleccionadas. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT sparseGramsUTF8('алиса', 3)
```

```response title=Response theme={null}
┌─sparseGramsUTF8('алиса', 3)─┐
│ ['али','лис','иса']         │
└─────────────────────────────┘
```

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

Introducido en: v1.1.0

Comprueba si una cadena empieza por la cadena proporcionada.

**Sintaxis**

```sql theme={null}
startsWith(s, prefix)
```

**Argumentos**

* `s` — Cadena que se va a comprobar. [`String`](/es/reference/data-types/string)
* `prefix` — Prefijo que se va a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` comienza con `prefix`; en caso contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.10.0

Comprueba si una cadena empieza por la cadena proporcionada sin distinguir entre mayúsculas y minúsculas.

**Sintaxis**

```sql theme={null}
startsWithCaseInsensitive(s, prefix)
```

**Argumentos**

* `s` — Cadena que se comprobará. [`String`](/es/reference/data-types/string)
* `prefix` — Prefijo sin distinción entre mayúsculas y minúsculas que se comprobará. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` comienza por el `prefix` sin distinguir entre mayúsculas y minúsculas; en caso contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.10.0

Comprueba si una cadena comienza con el prefijo proporcionado sin distinguir entre mayúsculas y minúsculas.
Se asume que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

```sql theme={null}
startsWithCaseInsensitiveUTF8(s, prefix)
```

**Argumentos**

* `s` — Cadena que se debe comprobar. [`String`](/es/reference/data-types/string)
* `prefix` — Prefijo, sin distinguir entre mayúsculas y minúsculas, cuya coincidencia se debe comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` empieza por `prefix` sin distinguir entre mayúsculas y minúsculas; en caso contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')
```

```response title=Response theme={null}
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘
```

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

Introducido en: v23.8.0

Comprueba si una cadena empieza por el prefijo proporcionado.
Asume que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

```sql theme={null}
startsWithUTF8(s, prefix)
```

**Argumentos**

* `s` — Cadena que se va a comprobar. [`String`](/es/reference/data-types/string)
* `prefix` — Prefijo que se va a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `s` empieza por `prefix`; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT startsWithUTF8('приставка', 'при')
```

```response title=Response theme={null}
┌─startsWithUT⋯ка', 'при')─┐
│                        1 │
└──────────────────────────┘
```

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

Introducido en: v25.6.0

Calcula la entropía de Shannon de la distribución de bytes de una cadena.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena que se va a analizar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la entropía de Shannon de la distribución de bytes de la cadena. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.6.0

Cuenta el número de bytes distintos de una cadena.

**Sintaxis**

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

**Argumentos**

* `s` — La cadena que se analizará. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el número de bytes distintos de la cadena. [`UInt16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT stringBytesUniq('Hello')
```

```response title=Response theme={null}
┌─stringBytesUniq('Hello')─┐
│                        4 │
└──────────────────────────┘
```

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

Introducido en: v23.11.0

Calcula el [índice de similitud de Jaccard](https://en.wikipedia.org/wiki/Jaccard_index) entre dos cadenas de bytes.

**Sintaxis**

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

**Argumentos**

* `s1` — Primera cadena de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el índice de similitud de Jaccard entre ambas cadenas. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v23.11.0

Igual que [`stringJaccardIndex`](#stringJaccardIndex), pero para cadenas codificadas en UTF-8.

**Sintaxis**

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

**Argumentos**

* `s1` — Primera cadena UTF-8 de entrada. [`String`](/es/reference/data-types/string)
* `s2` — Segunda cadena UTF-8 de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el índice de similitud de Jaccard entre las dos cadenas UTF-8. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT stringJaccardIndexUTF8('我爱你', '我也爱你')
```

```response title=Response theme={null}
┌─stringJaccardIndexUTF8('我爱你', '我也爱你')─┐
│                                       0.75 │
└─────────────────────────────────────────────┘
```

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

Introducido en: v1.1.0

Devuelve la subcadena de una cadena `s` que comienza en el índice de bytes `offset` especificado.
El recuento de bytes comienza en 1 con la siguiente lógica:

* Si `offset` es `0`, se devuelve una cadena vacía.
* Si `offset` es negativo, la subcadena comienza `offset` caracteres desde el final de la cadena, en lugar de hacerlo desde el principio.

Un argumento opcional, `length`, especifica el número máximo de bytes que puede tener la subcadena devuelta.

**Sintaxis**

```sql theme={null}
substring(s, offset[, length])
```

**Alias**: `byteSlice`, `mid`, `substr`

**Argumentos**

* `s` — La cadena de la que se extrae una subcadena. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring) o [`Enum`](/es/reference/data-types/enum)
* `offset` — La posición inicial de la subcadena en `s`. [`(U)Int*`](/es/reference/data-types/int-uint)
* `length` — Opcional. La longitud máxima de la subcadena. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una subcadena de `s` de `length` bytes, a partir del índice `offset`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Uso básico**

```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>

Introducido en: v23.7.0

Devuelve la subcadena de `s` situada antes de la `count`-ésima aparición del delimitador `delim`, como en Spark o MySQL.

**Sintaxis**

```sql theme={null}
substringIndex(s, delim, count)
```

**alias**: `SUBSTRING_INDEX`

**Argumentos**

* `s` — La cadena de la que se extrae la subcadena. [`String`](/es/reference/data-types/string)
* `delim` — El carácter delimitador. [`String`](/es/reference/data-types/string)
* `count` — El número de apariciones del delimitador que se cuentan antes de extraer la subcadena. Si `count` es positivo, se devuelve todo lo que está a la izquierda del delimitador final (contando desde la izquierda). Si `count` es negativo, se devuelve todo lo que está a la derecha del delimitador final (contando desde la derecha). [`UInt`](/es/reference/data-types/int-uint) o [`Int`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una subcadena de `s` situada antes de `count` apariciones de `delim`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v23.7.0

Devuelve la subcadena de `s` anterior a `count` apariciones del delimitador `delim`, específicamente para puntos de código Unicode.
Asume que la cadena contiene texto válido codificado en UTF-8.
Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.

**Sintaxis**

```sql theme={null}
substringIndexUTF8(s, delim, count)
```

**Argumentos**

* `s` — La cadena de la que se extrae la subcadena. [`String`](/es/reference/data-types/string)
* `delim` — El carácter delimitador. [`String`](/es/reference/data-types/string)
* `count` — El número de apariciones del delimitador que se cuentan antes de extraer la subcadena. Si `count` es positivo, se devuelve todo lo que queda a la izquierda del delimitador final (contando desde la izquierda). Si `count` es negativo, se devuelve todo lo que queda a la derecha del delimitador final (contando desde la derecha). [`UInt`](/es/reference/data-types/int-uint) o [`Int`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una subcadena de `s` situada antes de `count` apariciones de `delim`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de 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>

Introducido en: v1.1.0

Devuelve la subcadena de una cadena `s` que comienza en el índice de punto de código `offset` especificado.
El recuento de puntos de código comienza en `1` con la siguiente lógica:

* Si `offset` es `0`, se devuelve una cadena vacía.
* Si `offset` es negativo, la subcadena comienza `offset` puntos de código antes del final de la cadena, en lugar de hacerlo desde el principio.

Un argumento opcional, `length`, especifica el número máximo de puntos de código que puede tener la subcadena devuelta.

<Note>
  Esta función asume que la cadena contiene texto válido codificado en UTF-8.
  Si no se cumple esta suposición, no se lanza ninguna excepción y el resultado es indefinido.
</Note>

**Sintaxis**

```sql theme={null}
substringUTF8(s, offset[, length])
```

**Argumentos**

* `s` — La cadena de la que se extraerá una subcadena. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring) o [`Enum`](/es/reference/data-types/enum)
* `offset` — La posición inicial de la subcadena en `s`. [`Int`](/es/reference/data-types/int-uint) o [`UInt`](/es/reference/data-types/int-uint)
* `length` — La longitud máxima de la subcadena. Opcional. [`Int`](/es/reference/data-types/int-uint) o [`UInt`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una subcadena de `s` de hasta `length` puntos de código, a partir del índice de punto de código `offset`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Convierte una cadena a una codificación UTF-8 válida sustituyendo cualquier carácter UTF-8 no válido por el carácter de reemplazo `�` (U+FFFD).
Cuando se encuentran varios caracteres no válidos consecutivos, se sustituyen por un único carácter de reemplazo.

**Sintaxis**

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

**Argumentos**

* `s` — Cualquier conjunto de bytes representado como un objeto del tipo de dato String. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena UTF-8 válida. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Elimina los caracteres especificados del principio y del final de una cadena.
De forma predeterminada, elimina los caracteres comunes de espacio en blanco (ASCII).

**Sintaxis**

```sql theme={null}
trimBoth(s[, trim_characters])
```

**Alias**: `trim`

**Argumentos**

* `s` — Cadena que se recortará. [`String`](/es/reference/data-types/string)
* `trim_characters` — Opcional. Caracteres que se recortarán. Si no se especifica, se eliminan los caracteres de espacio en blanco habituales. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena tras recortar los caracteres especificados de ambos extremos. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT trimBoth('$$ClickHouse$$', '$')
```

```response title=Response theme={null}
┌─trimBoth('$$⋯se$$', '$')─┐
│ ClickHouse               │
└──────────────────────────┘
```

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

Introducido en: v20.1.0

Elimina los caracteres especificados del principio de una cadena.
De forma predeterminada, elimina los caracteres de espacio en blanco (ASCII) más comunes.

**Sintaxis**

```sql theme={null}
trimLeft(input[, trim_characters])
```

**Alias**: `ltrim`

**Argumentos**

* `input` — Cadena a recortar. [`String`](/es/reference/data-types/string)
* `trim_characters` — Opcional. Caracteres a recortar. Si no se especifican, se eliminan los caracteres de espacio en blanco habituales. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena con los caracteres especificados eliminados del extremo izquierdo. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v20.1.0

Elimina los caracteres especificados del final de una cadena.
De forma predeterminada, elimina los caracteres comunes de espacios en blanco (ASCII).

**Sintaxis**

```sql theme={null}
trimRight(s[, trim_characters])
```

**Alias**: `rtrim`

**Argumentos**

* `s` — Cadena a recortar. [`String`](/es/reference/data-types/string)
* `trim_characters` — Caracteres opcionales que se eliminarán. Si no se especifican, se eliminan los caracteres de espacio en blanco habituales. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la cadena con los caracteres especificados eliminados del extremo derecho. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

```response title=Response theme={null}
┌─trimRight('C⋯', 'House')─┐
│ Click                    │
└──────────────────────────┘
```

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

Introducida en: v25.6.0

Acepta una cadena y la decodifica mediante el esquema de codificación [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6).

**Sintaxis**

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

**Argumentos**

* `encoded` — Columna de tipo `String` o constante que se va a decodificar. Si la cadena no es una codificación Base32 válida, devuelve una cadena vacía en caso de error. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.10.0

Igual que [`base58Decode`](#base58Decode), pero devuelve una cadena vacía en caso de error.

**Sintaxis**

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

**Argumentos**

* `encoded` — Columna de tipo String o constante. Si la cadena no está codificada en Base58 de forma válida, devuelve una cadena vacía en caso de error. [`String`](/es/reference/data-types/string)
* `expected_size` — Opcional. Tamaño esperado de la decodificación en bytes. Cuando es 32 o 64, se usa un decodificador optimizado; para otros valores, se usa el decodificador genérico. [`UInt8, UInt16, UInt32 o UInt64`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una cadena que contiene el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v18.16.0

Igual que [`base64Decode`](#base64Decode), pero devuelve una cadena vacía en caso de error.

**Sintaxis**

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

**Argumentos**

* `encoded` — Columna o constante de tipo `String` que se va a decodificar. Si la cadena no está codificada en Base64 de forma válida, devuelve una cadena vacía en caso de error. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v18.16.0

Igual que [`base64URLDecode`](#base64URLDecode), pero devuelve una cadena vacía en caso de error.

**Sintaxis**

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

**Argumentos**

* `encoded` — columna `String` o constante que se va a decodificar. Si la cadena no es una codificación Base64 válida, devuelve una cadena vacía en caso de error. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena que contiene el valor decodificado del argumento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v24.1.0

Devuelve la representación Unicode (UTF-8) (algoritmo ToUnicode) de un nombre de dominio según el mecanismo [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA).
En caso de error, devuelve una cadena vacía en lugar de lanzar una excepción.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena de entrada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una representación ASCII de la cadena de entrada conforme al mecanismo IDNA del valor de entrada, o una cadena vacía si la entrada no es válida. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.1.0

Como `punycodeDecode`, pero devuelve una cadena vacía si no se proporciona una cadena codificada en Punycode válida.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena codificada en Punycode. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el texto plano del valor de entrada, o una cadena vacía si la entrada no es válida. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Convierte a mayúsculas los caracteres latinos ASCII de una cadena.

**Sintaxis**

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

**Alias**: `ucase`

**Argumentos**

* `s` — La cadena que se convertirá a mayúsculas. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una cadena en mayúsculas a partir de `s`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Convierte una cadena a mayúsculas, suponiendo que contiene texto válido codificado en UTF-8.
Si no se cumple esta condición, no se lanza ninguna excepción y el resultado es indefinido.

<Note>
  Esta función no detecta el idioma; por ejemplo, en turco, el resultado podría no ser del todo correcto (i/İ vs. i/I).
  Si la longitud de la secuencia de bytes UTF-8 difiere entre mayúsculas y minúsculas para un punto de código (como `ẞ` y `ß`), el resultado puede ser incorrecto para ese punto de código.
</Note>

**Sintaxis**

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

**Argumentos**

* `s` — Un tipo String. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Un valor de tipo de dato String. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

```response title=Response theme={null}
┌─Upperutf8─┐
│ MÜNCHEN   │
└───────────┘
```
