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.Strings0[, 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.Stringreplace— A string de substituição.const Stringoffset— Um inteiro do tipoInt(indexado a partir de 1). Seoffsetfor negativo, ele será contado a partir do final da strings.Intlength— Opcional. Um inteiro do tipoInt.lengthespecifica o comprimento do trecho dentro da string de entradasque será substituído. Selengthnão for especificado, o número de bytes removidos desserá igual ao comprimento dereplace; caso contrário,lengthbytes 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.Stringreplace— A string de substituição.const Stringoffset— Um inteiroInt(baseado em 1). Seoffsetfor negativo, ele é contado a partir do fim da string de entradas.(U)Int*length— Opcional. Especifica o comprimento do trecho na string de entradasque será substituído. Selengthnão for especificado, o número de caracteres removidos desserá igual ao comprimento dereplace; caso contrário, serão removidoslengthcaracteres.(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%.Stringsub1, 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.Stringpattern— A substring a ser encontrada e substituída.const Stringreplacement— 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.Stringpattern— A substring a ser encontrada e substituída.const Stringreplacement— 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.Stringpattern— O padrão de expressão regular a ser encontrado.const Stringreplacement— 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.Stringpattern— O padrão de expressão regular a ser encontrado.const Stringreplacement— 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.Stringfrom— Uma string ASCII constante que contém os caracteres a serem substituídos.const Stringto— 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.Stringfrom— uma string UTF-8 constante que contém os caracteres a serem substituídos.const Stringto— 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 │
└──────────────────┘