Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones de reemplazo de cadenas

Las funciones generales de cadenas y las funciones de búsqueda en cadenas se describen por separado.

format

Introducido en: v20.1.0

Da formato a la cadena pattern con los valores (cadenas, enteros, etc.) indicados en los argumentos, de forma similar al formato de Python. La cadena pattern puede contener campos de reemplazo entre llaves {}. Todo lo que no esté entre llaves se considera texto literal y se copia textualmente en la salida. Los caracteres de llave literales pueden escaparse con llaves dobles: {{ y }}. Los nombres de los campos pueden ser números (a partir de cero) o estar vacíos (en ese caso, se les asignan implícitamente números correlativos en orden ascendente).

Sintaxis

format(pattern, s0[, s1, ...])

Argumentos

  • pattern — La cadena de formato que contiene marcadores de posición. String
  • s0[, s1, ...] — Uno o más valores que se sustituyen en el patrón. Any

Valor devuelto

Devuelve una cadena formateada. String

Ejemplos

Marcadores de posición numerados

SELECT format('{1} {0} {1}', 'World', 'Hello')
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello                       │
└─────────────────────────────────────────┘

Numeración implícita

SELECT format('{} {}', 'Hello', 'World')
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World                       │
└───────────────────────────────────┘

overlay

Introducido en: v24.9.0

Reemplaza una parte de la cadena input por otra cadena, replace, a partir del índice basado en 1 offset.

Sintaxis

overlay(s, replace, offset[, length])

Argumentos

  • s — La cadena de entrada. String
  • replace — La cadena de reemplazo const String
  • offset — Un entero de tipo Int (indexado desde 1). Si offset es negativo, se cuenta desde el final de la cadena s. Int
  • length — Opcional. Un entero de tipo Int. length especifica la longitud del fragmento dentro de la cadena de entrada s que se va a reemplazar. Si no se especifica length, el número de bytes eliminados de s es igual a la longitud de replace; de lo contrario, se eliminan length bytes. Int

Valor devuelto

Devuelve una cadena con el reemplazo aplicado. String

Ejemplos

Reemplazo básico

SELECT overlay('My father is from Mexico.', 'mother', 4) AS res;
┌─res───────────────────────┐
│ My mother is from Mexico. │
└───────────────────────────┘

Reemplazo con longitud

SELECT overlay('My father is from Mexico.', 'dad', 4, 6) AS res;
┌─res────────────────────┐
│ My dad is from Mexico. │
└────────────────────────┘

overlayUTF8

Introducido en: v24.9.0

Reemplaza parte de la cadena s por otra cadena, replace, a partir del índice basado en 1 offset. 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

overlayUTF8(s, replace, offset[, length])

Argumentos

  • s — La cadena de entrada. String
  • replace — La cadena de reemplazo. const String
  • offset — Un entero Int (índice basado en 1). Si offset es negativo, se cuenta desde el final de la cadena de entrada s. (U)Int*
  • length — Opcional. Especifica la longitud del fragmento de la cadena de entrada s que se va a reemplazar. Si no se especifica length, el número de caracteres eliminados de s es igual a la longitud de replace; de lo contrario, se eliminan length caracteres. (U)Int*

Valor devuelto

Devuelve una cadena con el reemplazo aplicado. String

Ejemplos

Reemplazo UTF-8

SELECT overlayUTF8('Mein Vater ist aus Österreich.', 'der Türkei', 20) AS res;
┌─res────────────────────────────┐
│ Mein Vater ist aus der Türkei. │
└────────────────────────────────┘

printf

Introducido en: v24.8.0

La función printf da formato a la cadena proporcionada con los valores (cadenas, enteros, números de coma flotante, etc.) indicados en los argumentos, de forma similar a la función printf de C++. La cadena de formato puede contener especificadores de formato que comienzan con el carácter %. Todo lo que no forme parte de % y del especificador de formato que le sigue se considera texto literal y se copia literalmente en la salida. El carácter literal % puede escaparse con %%. La cadena de formato puede ser una constante o una expresión de columna, lo que permite usar distintos patrones de formato por fila.

Sintaxis

printf(format[, sub1, sub2, ...])

Argumentos

  • format — La cadena de formato con especificadores %. String
  • sub1, sub2, ... — Opcional. Cero o más valores que se sustituyen en la cadena de formato. Any

Valor devuelto

Devuelve una cadena formateada. String

Ejemplos

Formato de estilo C++

SELECT printf('%%%s %s %d', 'Hello', 'World', 2024);
┌─printf('%%%s %s %d', 'Hello', 'World', 2024)─┐
│ %Hello World 2024                            │
└──────────────────────────────────────────────┘

regexpQuoteMeta

Introducido en: v20.1.0

Añade una barra invertida antes de estos caracteres con significado especial en las expresiones regulares: \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -. Esta implementación difiere ligeramente de re2::RE2::QuoteMeta. Escapa el byte cero como \0 en lugar de \x00 y solo escapa los caracteres necesarios.

Sintaxis

regexpQuoteMeta(s)

Argumentos

  • s — La cadena de entrada que contiene caracteres que deben escaparse en regex. String

Valor devuelto

Devuelve una cadena con los caracteres especiales de regex escapados. String

Ejemplos

Escapar caracteres especiales de regex

SELECT regexpQuoteMeta('Hello. [World]? (Yes)*') AS res
┌─res───────────────────────────┐
│ Hello\. \[World\]\? \(Yes\)\* │
└───────────────────────────────┘

replaceAll

Introducido en: v1.1.0

Reemplaza todas las ocurrencias de la subcadena pattern en haystack por la cadena replacement.

Sintaxis

replaceAll(haystack, pattern, replacement)

Alias: replace

Argumentos

  • haystack — La cadena de entrada en la que se busca. String
  • pattern — La subcadena que se debe encontrar y reemplazar. const String
  • replacement — La cadena por la que se reemplaza el patrón. const String

Valor devuelto

Devuelve una cadena con todas las apariciones del patrón reemplazadas. String

Ejemplos

Reemplazar todas las apariciones

SELECT replaceAll('Hello, Hello world', 'Hello', 'Hi') AS res;
┌─res──────────┐
│ Hi, Hi world │
└──────────────┘

replaceOne

Introducido en: v1.1.0

Reemplaza la primera aparición de la subcadena pattern en haystack con la cadena replacement.

Sintaxis

replaceOne(haystack, pattern, replacement)

Argumentos

  • haystack — La cadena de entrada en la que se realiza la búsqueda. String
  • pattern — La subcadena que se debe buscar y reemplazar. const String
  • replacement — La cadena por la que se reemplazará el patrón. const String

Valor devuelto

Devuelve una cadena en la que se ha reemplazado la primera aparición del patrón. String

Ejemplos

Reemplazar la primera aparición

SELECT replaceOne('Hello, Hello world', 'Hello', 'Hi') AS res;
┌─res─────────────┐
│ Hi, Hello world │
└─────────────────┘

replaceRegexpAll

Introducido en: v1.1.0

Como replaceRegexpOne, pero reemplaza todas las apariciones del patrón. Como excepción, si una expresión regular coincide con una subcadena vacía, el reemplazo no se realiza más de una vez.

Sintaxis

replaceRegexpAll(haystack, pattern, replacement)

Alias: REGEXP_REPLACE

Argumentos

  • haystack — La cadena de entrada en la que se busca. String
  • pattern — El patrón de expresión regular que se debe encontrar. const String
  • replacement — La cadena por la que se reemplaza el patrón; puede contener sustituciones. const String

Valor devuelto

Devuelve una cadena en la que se reemplazan todas las coincidencias de la expresión regular. String

Ejemplos

Reemplazar todos los caracteres por una versión duplicada

SELECT replaceRegexpAll('Hello123', '.', '\\0\\0') AS res
┌─res──────────────┐
│ HHeelllloo112233 │
└──────────────────┘

Ejemplo de reemplazo de una subcadena vacía

SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘

replaceRegexpOne

Introducido en: v1.1.0

Reemplaza la primera aparición de la subcadena que coincide con la expresión regular pattern (en sintaxis re2) en haystack por la cadena replacement. replacement puede contener sustituciones \0-\9. Las sustituciones \1-\9 corresponden al 1.º-9.º grupo de captura (subcoincidencia), y la sustitución \0 corresponde a la coincidencia completa. Para usar un carácter \ literal en las cadenas pattern o replacement, escápalo con \. Ten en cuenta también que los literales de cadena requieren un escape adicional.

Sintaxis

replaceRegexpOne(haystack, pattern, replacement)

Argumentos

  • haystack — La cadena de entrada en la que se realiza la búsqueda. String
  • pattern — El patrón de expresión regular que se debe encontrar. const String
  • replacement — La cadena por la que se reemplazará el patrón; puede contener sustituciones. const String

Valor devuelto

Devuelve una cadena en la que se reemplaza la primera coincidencia de la expresión regular. String

Ejemplos

Conversión de fechas ISO al formato estadounidense

SELECT replaceRegexpOne(d, '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res
FROM values('d String', '2014-03-17', '2014-03-18', '2014-03-19')
┌─res────────┐
│ 03/17/2014 │
│ 03/18/2014 │
│ 03/19/2014 │
└────────────┘

Copiar una cadena diez veces

SELECT replaceRegexpOne('Hello, World!', '.*', '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0') AS res
┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

translate

Introducido en: v22.7.0

Reemplaza caracteres de la cadena s mediante un mapeo de caracteres uno a uno definido por las cadenas from y to. from y to deben ser cadenas ASCII constantes. Si from y to tienen el mismo tamaño, cada aparición del primer carácter de first en s se reemplaza por el primer carácter de to, el segundo carácter de first en s se reemplaza por el segundo carácter de to, etc. Si from contiene más caracteres que to, todas las apariciones de los caracteres al final de from que no tienen un carácter correspondiente en to se eliminan de s. La función no modifica los caracteres no ASCII de s.

Sintaxis

translate(s, from, to)

Argumentos

  • s — La cadena de entrada que se va a transformar. String
  • from — Una cadena ASCII constante que contiene los caracteres que se deben reemplazar. const String
  • to — Una cadena ASCII constante que contiene los caracteres de reemplazo. const String

Valor devuelto

Devuelve una cadena con las sustituciones de caracteres aplicadas. String

Ejemplos

Mapeo de caracteres

SELECT translate('Hello, World!', 'delor', 'DELOR') AS res
┌─res───────────┐
│ HELLO, WORLD! │
└───────────────┘

Distintas longitudes

SELECT translate('clickhouse', 'clickhouse', 'CLICK') AS res
┌─res───┐
│ CLICK │
└───────┘

translateUTF8

Introducido en: v22.7.0

Como translate, pero supone que s, from y to son cadenas codificadas en UTF-8.

Sintaxis

translateUTF8(s, from, to)

Argumentos

  • s — cadena de entrada UTF-8 que se va a traducir. String
  • from — cadena UTF-8 constante que contiene los caracteres que se van a reemplazar. const String
  • to — cadena UTF-8 constante que contiene los caracteres de reemplazo. const String

Valor devuelto

Devuelve un valor de tipo de dato String. String

Ejemplos

Traducción de caracteres UTF-8

SELECT translateUTF8('Münchener Straße', 'üß', 'us') AS res;
┌─res──────────────┐
│ Munchener Strase │
└──────────────────┘
Navigation