Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funções de substituição de strings

Funções gerais de strings e funções de pesquisa em strings são descritas separadamente.

format

Introduzido em: v20.1.0

Formata a string pattern com os valores (strings, inteiros etc.) listados nos argumentos, de modo semelhante à formatação em Python. A string pattern pode conter campos de substituição entre chaves {}. Tudo o que não estiver entre chaves é considerado texto literal e copiado literalmente para a saída. Os caracteres de chave literais podem ser escapados com duas chaves: {{ e }}. Os nomes dos campos podem ser números (começando em zero) ou estar vazios (nesse caso, recebem implicitamente números crescentes).

Sintaxe

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

Argumentos

  • pattern — A string de formato que contém placeholders. String
  • s0[, s1, ...] — Um ou mais valores para substituir os placeholders no padrão. Any

Valor retornado

Retorna uma string formatada. String

Exemplos

Placeholders numerados

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

Numeração implícita

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

overlay

Introduzido na versão: v24.9.0

Substitui parte da string input por outra string replace, começando no índice offset, baseado em 1.

Sintaxe

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

Argumentos

  • s — A string de entrada. String
  • replace — A string de substituição. const String
  • offset — Um inteiro do tipo Int (indexado a partir de 1). Se offset for negativo, ele será contado a partir do final da string s. Int
  • length — Opcional. Um inteiro do tipo Int. length especifica o comprimento do trecho dentro da string de entrada s que será substituído. Se length não for especificado, o número de bytes removidos de s será igual ao comprimento de replace; caso contrário, length bytes serão removidos. Int

Valor retornado

Retorna uma string com o trecho substituído. String

Exemplos

Substituição básica

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

Substituição com tamanho

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

overlayUTF8

Introduzido em: v24.9.0

Substitui parte da string s por outra string, replace, começando no índice offset, baseado em 1. Pressupõe que a string contenha texto válido codificado em UTF-8. Se essa suposição for violada, nenhuma exceção é lançada e o resultado é indefinido.

Sintaxe

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

Argumentos

  • s — A string de entrada. String
  • replace — A string de substituição. const String
  • offset — Um inteiro Int (baseado em 1). Se offset for negativo, ele é contado a partir do fim da string de entrada s. (U)Int*
  • length — Opcional. Especifica o comprimento do trecho na string de entrada s que será substituído. Se length não for especificado, o número de caracteres removidos de s será igual ao comprimento de replace; caso contrário, serão removidos length caracteres. (U)Int*

Valor retornado

Retorna uma string com o conteúdo substituído. String

Exemplos

Substituição UTF-8

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

printf

Introduzido em: v24.8.0

A função printf formata a string fornecida com os valores (strings, inteiros, números de ponto flutuante etc.) listados nos argumentos, de maneira semelhante à função printf em C++. A string de formato pode conter especificadores de formato iniciados pelo caractere %. Tudo o que não estiver contido em % e no especificador de formato seguinte é considerado texto literal e copiado literalmente para a saída. O caractere % literal pode ser escapado com %%. A string de formato pode ser uma constante ou uma expressão de coluna, permitindo diferentes padrões de formato por linha.

Sintaxe

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

Argumentos

  • format — A string de formato com especificadores %. String
  • sub1, sub2, ... — Opcional. Zero ou mais valores a serem substituídos na string de formato. Any

Valor retornado

Retorna uma string formatada. String

Exemplos

Formatação no estilo C++

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

regexpQuoteMeta

Introduzido em: v20.1.0

Adiciona uma barra invertida antes destes caracteres com significado especial em expressões regulares: \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -. Esta implementação difere ligeiramente de re2::RE2::QuoteMeta. Ela escapa o byte zero como \0 em vez de \x00 e escapa apenas os caracteres necessários.

Sintaxe

regexpQuoteMeta(s)

Argumentos

  • s — A string de entrada que contém caracteres que devem ser escapados em regex. String

Valor retornado

Retorna uma string com os caracteres especiais de regex escapados. String

Exemplos

Escapar caracteres especiais de regex

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

replaceAll

Introduzido em: v1.1.0

Substitui todas as ocorrências da substring pattern em haystack pela string replacement.

Sintaxe

replaceAll(haystack, pattern, replacement)

Aliases: replace

Argumentos

  • haystack — A string de entrada na qual buscar. String
  • pattern — A substring a ser encontrada e substituída. const String
  • replacement — A string que substituirá o padrão. const String

Valor retornado

Retorna uma string com todas as ocorrências do padrão substituídas. String

Exemplos

Substituir todas as ocorrências

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

replaceOne

Introduzido em: v1.1.0

Substitui a primeira ocorrência da substring pattern em haystack pela string replacement.

Sintaxe

replaceOne(haystack, pattern, replacement)

Argumentos

  • haystack — A string de entrada na qual a busca será feita. String
  • pattern — A substring a ser encontrada e substituída. const String
  • replacement — A string usada para substituir a substring. const String

Valor retornado

Retorna uma string com a primeira ocorrência da substring substituída. String

Exemplos

Substituir a primeira ocorrência

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

replaceRegexpAll

Introduzido em: v1.1.0

Semelhante a replaceRegexpOne, mas substitui todas as ocorrências do padrão. Como exceção, se uma expressão regular corresponder a uma substring vazia, a substituição não será feita mais de uma vez.

Sintaxe

replaceRegexpAll(haystack, pattern, replacement)

Aliases: REGEXP_REPLACE

Argumentos

  • haystack — A string de entrada na qual a busca será feita. String
  • pattern — O padrão de expressão regular a ser encontrado. const String
  • replacement — A string de substituição; pode conter substituições. const String

Valor retornado

Retorna uma string com todas as correspondências da expressão regular substituídas. String

Exemplos

Substituir todos os caracteres pela versão duplicada

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

Exemplo de substituição de substring vazia

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

replaceRegexpOne

Introduzido em: v1.1.0

Substitui a primeira ocorrência da substring que corresponde à expressão regular pattern (na sintaxe do re2) em haystack pela string replacement. replacement pode conter substituições \0-\9. As substituições \1-\9 correspondem aos grupos de captura de 1 a 9 (submatches), e a substituição \0 corresponde à correspondência inteira. Para usar o caractere literal \ nas strings pattern ou replacement, escape-o com \. Lembre-se também de que literais de string exigem escape adicional.

Sintaxe

replaceRegexpOne(haystack, pattern, replacement)

Argumentos

  • haystack — A string de entrada na qual será feita a pesquisa. String
  • pattern — O padrão de expressão regular a ser encontrado. const String
  • replacement — A string que substituirá o padrão; pode conter substituições. const String

Valor retornado

Retorna uma string com a primeira correspondência da expressão regular substituída. String

Exemplos

Convertendo datas ISO para o formato americano

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 │
└────────────┘

Copiando uma string dez vezes

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

Introduzido na versão: v22.7.0

Substitui caracteres na string s usando um mapeamento de caracteres um para um definido pelas strings from e to. from e to devem ser strings ASCII constantes. Se from e to tiverem o mesmo tamanho, cada ocorrência do primeiro caractere de from em s será substituída pelo primeiro caractere de to, a segunda ocorrência de from em s será substituída pelo segundo caractere de to e assim por diante. Se from contiver mais caracteres do que to, todas as ocorrências dos caracteres no final de from que não tiverem caractere correspondente em to serão removidas de s. Caracteres não ASCII em s não são modificados pela função.

Sintaxe

translate(s, from, to)

Argumentos

  • s — A string de entrada a ser convertida. String
  • from — Uma string ASCII constante que contém os caracteres a serem substituídos. const String
  • to — Uma string ASCII constante que contém os caracteres de substituição. const String

Valor retornado

Retorna uma string com as substituições de caracteres aplicadas. String

Exemplos

Mapeamento de caracteres

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

Comprimentos distintos

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

translateUTF8

Introduzido em: v22.7.0

Como translate, mas pressupõe que s, from e to sejam strings codificadas em UTF-8.

Sintaxe

translateUTF8(s, from, to)

Argumentos

  • s — string UTF-8 de entrada a ser convertida. String
  • from — uma string UTF-8 constante que contém os caracteres a serem substituídos. const String
  • to — uma string UTF-8 constante que contém os caracteres de substituição. const String

Valor retornado

Retorna um valor do tipo de dado String. String

Exemplos

Conversão de caracteres UTF-8

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