Todas as funções nesta seção fazem buscas com diferenciação entre maiúsculas e minúsculas por padrão. A busca sem diferenciar maiúsculas de minúsculas geralmente é oferecida por variantes separadas da função.
As funções nesta seção também pressupõem que a string pesquisada (chamada nesta seção de haystack) e a string de busca (chamada nesta seção de needle) sejam textos codificados em byte único. Se essa suposição for
violada, nenhuma exceção é gerada e os resultados são indefinidos. A busca com strings codificadas em UTF-8 geralmente é oferecida por variantes separadas da função. Da mesma forma, se uma variante de função UTF-8 for usada e as strings de entrada não forem texto codificado em UTF-8, nenhuma exceção é gerada e os
resultados são indefinidos. Observe que nenhuma normalização Unicode automática é realizada; no entanto, você pode usar as funções
normalizeUTF8*() para isso.
Funções gerais de strings e funções de substituição em strings são descritas separadamente.
countMatches
Introduzido em: v21.1.0
Retorna o número de correspondências de uma expressão regular em uma string.
Sintaxe
countMatches(haystack, pattern)Argumentos
Valor retornado
Retorna o número de correspondências encontradas. UInt64
Exemplos
Contar sequências de dígitos
SELECT countMatches('hello 123 world 456 test', '[0-9]+')┌─countMatches('hello 123 world 456 test', '[0-9]+')─┐
│ 2 │
└────────────────────────────────────────────────────┘countMatchesCaseInsensitive
Introduzido em: v21.1.0
Semelhante a countMatches, mas faz correspondência sem diferenciar maiúsculas de minúsculas.
Sintaxe
countMatchesCaseInsensitive(haystack, pattern)Argumentos
haystack— A string na qual pesquisar.Stringpattern— Padrão de expressão regular.const String
Valor retornado
Retorna o número de correspondências encontradas. UInt64
Exemplos
Contagem sem diferenciar maiúsculas de minúsculas
SELECT countMatchesCaseInsensitive('Hello HELLO world', 'hello')┌─countMatchesCaseInsensitive('Hello HELLO world', 'hello')─┐
│ 2 │
└───────────────────────────────────────────────────────────┘countSubstrings
Introduzido em: v21.1.0
Retorna quantas vezes a substring needle ocorre na string haystack.
Sintaxe
countSubstrings(haystack, needle[, start_pos])Argumentos
haystack— String em que a busca é realizada. String ou Enum. -needle— Substring a ser pesquisada. String. -start_pos— Posição (baseada em 1) emhaystackna qual a busca se inicia. UInt. Opcional.
Valor retornado
O número de ocorrências. UInt64
Exemplos
Exemplo de uso
SELECT countSubstrings('aaaa', 'aa');┌─countSubstrings('aaaa', 'aa')─┐
│ 2 │
└───────────────────────────────┘Com o argumento start_pos
SELECT countSubstrings('abc___abc', 'abc', 4);┌─countSubstrings('abc___abc', 'abc', 4)─┐
│ 1 │
└────────────────────────────────────────┘countSubstringsCaseInsensitive
Introduzido em: v21.1.0
Semelhante a countSubstrings, mas conta sem diferenciar maiúsculas de minúsculas.
Sintaxe
countSubstringsCaseInsensitive(haystack, needle[, start_pos])Argumentos
haystack— String em que a busca é realizada.StringouEnumneedle— Substring a ser buscada.Stringstart_pos— Opcional. Posição (baseada em 1) emhaystackna qual a busca começa.UInt*
Valor retornado
Retorna o número de ocorrências da substring em haystack. UInt64
Exemplos
Exemplo de uso
SELECT countSubstringsCaseInsensitive('AAAA', 'aa');┌─countSubstringsCaseInsensitive('AAAA', 'aa')─┐
│ 2 │
└──────────────────────────────────────────────┘Com o argumento start_pos
SELECT countSubstringsCaseInsensitive('abc___ABC___abc', 'abc', 4);┌─countSubstringsCaseInsensitive('abc___ABC___abc', 'abc', 4)─┐
│ 2 │
└─────────────────────────────────────────────────────────────┘countSubstringsCaseInsensitiveUTF8
Introduzido em: v21.1.0
Como countSubstrings, mas conta sem diferenciar maiúsculas de minúsculas e pressupõe que o haystack seja uma string UTF-8.
Sintaxe
countSubstringsCaseInsensitiveUTF8(haystack, needle[, start_pos])Argumentos
haystack— String UTF-8 na qual a busca é realizada.StringouEnumneedle— Substring a ser pesquisada.Stringstart_pos— Opcional. Posição (começando em 1) emhaystackna qual a busca se inicia.UInt*
Valor retornado
Retorna o número de ocorrências de needle em haystack. UInt64
Exemplos
Exemplo de uso
SELECT countSubstringsCaseInsensitiveUTF8('ложка, кошка, картошка', 'КА');┌─countSubstringsCaseInsensitiveUTF8('ложка, кошка, картошка', 'КА')─┐
│ 4 │
└────────────────────────────────────────────────────────────────────┘Com o argumento start_pos
SELECT countSubstringsCaseInsensitiveUTF8('ложка, кошка, картошка', 'КА', 13);┌─countSubstringsCaseInsensitiveUTF8('ложка, кошка, картошка', 'КА', 13)─┐
│ 2 │
└────────────────────────────────────────────────────────────────────────┘extract
Introduzido em: v1.1.0
Extrai a primeira correspondência de uma expressão regular em uma string. Se 'haystack' não corresponder a 'pattern', uma string vazia será retornada.
Esta função usa a biblioteca de expressões regulares RE2. Consulte re2 para conhecer a sintaxe compatível.
Se a expressão regular tiver grupos de captura (subpadrões), a função faz a correspondência da string de entrada com o primeiro grupo de captura.
Sintaxe
extract(haystack, pattern)Argumentos
haystack— String de onde extrair.Stringpattern— Expressão regular, normalmente contendo um grupo de captura.const String
Valor retornado
Retorna o fragmento extraído como string. String
Exemplos
Extrair domínio de um e-mail
SELECT extract('test@clickhouse.com', '.*@(.*)$')┌─extract('test@clickhouse.com', '.*@(.*)$')─┐
│ clickhouse.com │
└────────────────────────────────────────────┘Sem correspondência, retorna string vazia
SELECT extract('test@clickhouse.com', 'no_match')┌─extract('test@clickhouse.com', 'no_match')─┐
│ │
└────────────────────────────────────────────┘extractAll
Introduzido em: v1.1.0
Semelhante a extract, mas retorna um array com todas as correspondências de uma expressão regular em uma string.
Se 'haystack' não corresponder à regex 'pattern', será retornado um array vazio.
Se a expressão regular tiver grupos de captura (subpadrões), a função faz a correspondência da string de entrada com o primeiro grupo de captura.
Sintaxe
extractAll(haystack, pattern)Argumentos
haystack— String da qual os fragmentos são extraídos.Stringpattern— Expressão regular, opcionalmente contendo grupos de captura.const String
Valor retornado
Retorna um array com os fragmentos extraídos. Array(String)
Exemplos
Extrair todos os números
SELECT extractAll('hello 123 world 456', '[0-9]+')┌─extractAll('hello 123 world 456', '[0-9]+')─┐
│ ['123','456'] │
└─────────────────────────────────────────────┘Extrair usando um grupo de captura
SELECT extractAll('test@example.com, user@domain.org', '([a-zA-Z0-9]+)@')┌─extractAll('test@example.com, user@domain.org', '([a-zA-Z0-9]+)@')─┐
│ ['test','user'] │
└────────────────────────────────────────────────────────────────────┘extractAllGroupsHorizontal
Introduzido em: v20.5.0
Encontra todos os grupos em uma string usando a expressão regular fornecida e retorna um array de arrays, em que cada array contém todas as capturas do mesmo grupo de captura, organizadas pelo número do grupo.
Sintaxe
extractAllGroupsHorizontal(s, regexp)Argumentos
s— String de entrada da qual extrair os dados.StringouFixedStringregexp— Expressão regular usada para fazer a correspondência.const Stringouconst FixedString
Valor retornado
Retorna um array de arrays, em que cada array interno contém todas as capturas de um grupo de captura em todas as correspondências. O primeiro array interno contém todas as capturas do grupo 1, o segundo do grupo 2, e assim por diante. Se nenhuma correspondência for encontrada, retorna um array vazio. Array(Array(String))
Exemplos
Exemplo de uso
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsHorizontal(s, '< ([\\w\\-]+): ([^\\r\\n]+)');[['Server','Date','Content-Type','Connection'],['nginx','Tue, 22 Jan 2019 00:26:14 GMT','text/html; charset=UTF-8','keep-alive']]extractGroups
Introduzido em: v20.5.0
Extrai os grupos de captura da primeira substring correspondente a uma expressão regular. Para extrair grupos de todas as correspondências, use extractAllGroupsHorizontal ou extractAllGroupsVertical.
Sintaxe
extractGroups(s, regexp)Argumentos
s— String de entrada da qual extrair.StringouFixedStringregexp— Expressão regular. Deve conter pelo menos um grupo de captura. Constante.const Stringouconst FixedString
Valor retornado
Se a expressão regular encontrar correspondência, retorna um array contendo os grupos capturados (1 a N, em que N é o número de grupos de captura em regexp) da primeira correspondência. Se não houver correspondência, retorna um array vazio. Array(String)
Exemplos
Exemplo de uso
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractGroups(s, '< ([\\w\\-]+): ([^\\r\\n]+)');['Server','nginx']hasAllTokens
Introduzido em: v25.10.0
Semelhante a hasAnyTokens, mas retorna 1 se todos os tokens na string ou array needle corresponderem à string input, e 0 caso contrário. Se input for uma coluna, retorna todas as linhas que satisfazem essa condição.
Antes de realizar a busca, a função tokeniza
- o argumento
input(sempre), e - o argumento
needle(se fornecido como String) usa o tokenizador especificado para o índice de texto. Se a coluna não tiver nenhum índice de texto definido, o tokenizadorsplitByNonAlphaserá usado. Se o argumentoneedlefor do tipo Array(String), cada elemento do array será tratado como um token — não haverá tokenização adicional. Se o índice de texto tiver uma expressão de pré-processador configurada, o pré-processador será aplicado ao needle (se fornecido comoString) antes da tokenização. Se o índice de texto tiver uma expressão de pós-processador configurada, o pós-processador será aplicado aos tokens de needle e aos tokens de input (isto é, a ambos após a tokenização).
Tokens duplicados são ignorados. Por exemplo, needles = ['ClickHouse', 'ClickHouse'] é tratado da mesma forma que ['ClickHouse'].
Sintaxe
hasAllTokens(input, needles[, tokenizer])Aliases: hasAllToken
Argumentos
input— A coluna de entrada.StringouFixedStringouNullable(String)ouNullable(FixedString)ouArray(String)ouArray(FixedString)ouArray(Nullable(String))ouArray(Nullable(FixedString))needles— tokens a serem buscados.StringouArray(String)tokenizer— O tokenizador a ser usado. Os argumentos válidos sãosplitByNonAlpha,splitByString,splitByRegexp,asciiCJK,chinese,icu('<locale>'),japanese,ngrams,sparseGramsearray. Opcional; se não for definido explicitamente, o valor padrão ésplitByNonAlpha.const String
Valor retornado
Retorna 1 se todas as needles corresponderem. 0 caso contrário. UInt8
Exemplos
Uso básico com uma string de busca
DROP TABLE IF EXISTS doc;
CREATE TABLE doc (
id UInt32,
msg String,
INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO doc VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');
SELECT count() FROM doc WHERE hasAllTokens(msg, 'a\\d()');┌─count()─┐
│ 1 │
└─────────┘Especifique needles a serem pesquisadas AS-IS (sem tokenização) em um array
DROP TABLE IF EXISTS doc;
CREATE TABLE doc (
id UInt32,
msg String,
INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO doc VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');
SELECT count() FROM doc WHERE hasAllTokens(msg, ['a', 'd']);┌─count()─┐
│ 1 │
└─────────┘Gere needles usando a função tokens
DROP TABLE IF EXISTS doc;
CREATE TABLE doc (
id UInt32,
msg String,
INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO doc VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');
SELECT count() FROM doc WHERE hasAllTokens(msg, tokens('a()d', 'splitByString', ['()', '\\']));┌─count()─┐
│ 1 │
└─────────┘Use um tokenizador personalizado com o 3º argumento
SELECT hasAllTokens('abcdef', 'abc', 'ngrams(3)');┌─hasAllTokens('abcdef', 'abc', 'ngrams(3)')─┐
│ 1 │
└────────────────────────────────────────────┘Exemplos de uso de colunas array e map
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});Exemplo com uma coluna do tipo Array
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
SELECT count() FROM log WHERE hasAllTokens(tags, 'clickhouse');┌─count()─┐
│ 1 │
└─────────┘Exemplo com mapKeys
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
SELECT count() FROM log WHERE hasAllTokens(mapKeys(attributes), ['address', 'log_level']);┌─count()─┐
│ 1 │
└─────────┘Exemplo com mapValues
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
SELECT count() FROM log WHERE hasAllTokens(mapValues(attributes), ['192.0.0.1', 'DEBUG']);┌─count()─┐
│ 0 │
└─────────┘hasAnyTokens
Introduzido em: v25.10.0
Retorna 1 se pelo menos um token da string ou array needle corresponder à string input, e 0 caso contrário. Se input for uma coluna, retorna todas as linhas que satisfazem essa condição.
Antes de realizar a busca, a função tokeniza
- o argumento
input(sempre), e - o argumento
needle(se fornecido como String) usando o tokenizador especificado para o índice de texto. Se a coluna não tiver um índice de texto definido, o tokenizadorsplitByNonAlphaserá usado. Se o argumentoneedlefor do tipo Array(String), cada elemento do array será tratado como um token — não haverá tokenização adicional. Se o índice de texto tiver uma expressão de pré-processador configurada, o pré-processador será aplicado aneedle(se fornecido comoString) antes da tokenização. Se o índice de texto tiver uma expressão de pós-processador configurada, o pós-processador será aplicado aos tokens deneedlee aos tokens deinput(ou seja, a ambos após a tokenização).
Tokens duplicados são ignorados. Por exemplo, ['ClickHouse', 'ClickHouse'] é tratado da mesma maneira que ['ClickHouse'].
Sintaxe
hasAnyTokens(input, needles[, tokenizer])Aliases: hasAnyToken
Argumentos
input— A coluna de entrada.StringouFixedStringouNullable(String)ouNullable(FixedString)ouArray(String)ouArray(FixedString)ouArray(Nullable(String))ouArray(Nullable(FixedString))needles— tokens a serem procurados.StringouArray(String)tokenizer— O tokenizador a ser utilizado. Os argumentos válidos sãosplitByNonAlpha,splitByString,splitByRegexp,asciiCJK,chinese,icu('<locale>'),japanese,ngrams,sparseGramsearray. Opcional; se não for definido explicitamente, o valor padrão ésplitByNonAlpha.const String
Valor retornado
Retorna 1 se houver pelo menos uma correspondência. Caso contrário, 0. UInt8
Exemplos
Uso básico com uma string como "needle"
DROP TABLE IF EXISTS doc;
CREATE TABLE doc (
id UInt32,
msg String,
INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO doc VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');
SELECT count() FROM doc WHERE hasAnyTokens(msg, 'a\\d()');┌─count()─┐
│ 3 │
└─────────┘Especifique needles a serem pesquisadas como estão (sem tokenização) em um array
DROP TABLE IF EXISTS doc;
CREATE TABLE doc (
id UInt32,
msg String,
INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO doc VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');
SELECT count() FROM doc WHERE hasAnyTokens(msg, ['a', 'd']);┌─count()─┐
│ 3 │
└─────────┘Gere needles usando a função tokens
DROP TABLE IF EXISTS doc;
CREATE TABLE doc (
id UInt32,
msg String,
INDEX idx(msg) TYPE text(tokenizer = splitByString(['()', '\\']))
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO doc VALUES (1, '()a,\\bc()d'), (2, '()\\a()bc\\d'), (3, ',()a\\,bc,(),d,');
SELECT count() FROM doc WHERE hasAnyTokens(msg, tokens('a()d', 'splitByString', ['()', '\\']));┌─count()─┐
│ 3 │
└─────────┘Exemplos de uso de colunas array e map
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});Exemplo com uma coluna de array
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
SELECT count() FROM log WHERE hasAnyTokens(tags, 'clickhouse');┌─count()─┐
│ 1 │
└─────────┘Exemplo com mapKeys
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
SELECT count() FROM log WHERE hasAnyTokens(mapKeys(attributes), ['address', 'log_level']);┌─count()─┐
│ 2 │
└─────────┘Exemplo com mapValues
DROP TABLE IF EXISTS log;
CREATE TABLE log (
id UInt32,
tags Array(String),
attributes Map(String, String),
INDEX idx_tags (tags) TYPE text(tokenizer = splitByNonAlpha),
INDEX idx_attributes_keys mapKeys(attributes) TYPE text(tokenizer = array),
INDEX idx_attributes_vals mapValues(attributes) TYPE text(tokenizer = array)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO log VALUES
(1, ['clickhouse', 'clickhouse cloud'], {'address': '192.0.0.1', 'log_level': 'INFO'}),
(2, ['chdb'], {'embedded': 'true', 'log_level': 'DEBUG'});
SELECT count() FROM log WHERE hasAnyTokens(mapValues(attributes), ['192.0.0.1', 'DEBUG']);┌─count()─┐
│ 2 │
└─────────┘hasPhrase
Introduzido em: v26.4.0
Verifica se o input contém todos os tokens da phrase em ordem consecutiva.
Antes da pesquisa, a função tokeniza os argumentos input e phrase usando o tokenizador especificado para o índice de texto.
Se a coluna não tiver nenhum índice de texto definido, o tokenizador splitByNonAlpha será usado — a menos que um tokenizador seja fornecido como terceiro argumento opcional.
O argumento tokenizer deve ser um de splitByNonAlpha, splitByString, splitByRegexp, ngrams, asciiCJK ou icu.
Observe que splitByRegexp não é compatível com hasPhrase quando o índice de texto também define um pós-processador.
Diferentemente de hasToken, hasAnyTokens e hasAllTokens, hasPhrase exige que os tokens apareçam na mesma ordem
e sem nenhum token entre eles. Por exemplo, hasPhrase('the quick brown fox', 'quick fox') retorna 0
porque "brown" aparece entre "quick" e "fox".
Sintaxe
hasPhrase(input, phrase[, tokenizer])Aliases: matchPhrase
Argumentos
input— A coluna de entrada.StringouFixedStringphrase— Frase a ser buscada.const Stringtokenizer— O tokenizador a ser usado. Opcional; o padrão ésplitByNonAlpha.const String
Valor retornado
Retorna 1 se a frase for encontrada como uma sequência contínua de tokens; caso contrário, retorna 0. UInt8
Exemplos
Correspondência por frase
SELECT hasPhrase('the quick brown fox jumps', 'quick brown')┌─hasPhrase('the quick brown fox jumps', 'quick brown')─┐
│ 1 │
└───────────────────────────────────────────────────────┘Tokens não consecutivos
SELECT hasPhrase('the quick brown fox jumps', 'quick fox')┌─hasPhrase('the quick brown fox jumps', 'quick fox')─┐
│ 0 │
└─────────────────────────────────────────────────────┘hasSubsequence
Introduzido em: v23.7.0
Verifica se uma needle é uma subsequência de uma haystack. Uma subsequência de uma string é uma sequência que pode ser derivada de outra string pela remoção de alguns caracteres, ou de nenhum, sem alterar a ordem dos caracteres restantes.
Sintaxe
hasSubsequence(haystack, needle)Argumentos
haystack— String em que a subsequência será pesquisada.Stringneedle— Subsequência a ser pesquisada.String
Valor retornado
Retorna 1 se needle for uma subsequência de haystack; caso contrário, retorna 0. UInt8
Exemplos
Verificação básica de subsequência
SELECT hasSubsequence('Hello World', 'HlWrd')┌─hasSubsequence('Hello World', 'HlWrd')─┐
│ 1 │
└────────────────────────────────────────┘Nenhuma subsequência encontrada
SELECT hasSubsequence('Hello World', 'xyz')┌─hasSubsequence('Hello World', 'xyz')─┐
│ 0 │
└──────────────────────────────────────┘hasSubsequenceCaseInsensitive
Introduzido em: v23.7.0
Como hasSubsequence, mas faz a busca sem diferenciar maiúsculas de minúsculas.
Sintaxe
hasSubsequenceCaseInsensitive(haystack, needle)Argumentos
Valor retornado
Retorna 1 se needle for uma subsequência de haystack e 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT hasSubsequenceCaseInsensitive('garbage', 'ARG');┌─hasSubsequenceCaseInsensitive('garbage', 'ARG')─┐
│ 1 │
└─────────────────────────────────────────────────┘hasSubsequenceCaseInsensitiveUTF8
Introduzido em: v23.7.0
Como hasSubsequenceUTF8, mas faz a busca sem diferenciar maiúsculas de minúsculas.
Sintaxe
hasSubsequenceCaseInsensitiveUTF8(haystack, needle)Argumentos
haystack— String codificada em UTF-8 na qual a busca é realizada.Stringneedle— Subsequência codificada em UTF-8 a ser buscada.String
Valor retornado
Retorna 1 se needle for uma subsequência de haystack, 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT hasSubsequenceCaseInsensitiveUTF8('ClickHouse - столбцовая система управления базами данных', 'СИСТЕМА');┌─hasSubsequenceCaseInsensitiveUTF8('ClickHouse - столбцовая система управления базами данных', 'СИСТЕМА')─┐
│ 1 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────┘hasSubsequenceUTF8
Introduzido em: v23.7.0
Como hasSubsequence, mas considera que haystack e needle são strings codificadas em UTF-8.
Sintaxe
hasSubsequenceUTF8(haystack, needle)Argumentos
Valor retornado
Retorna 1 se needle for uma subsequência de haystack; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
SELECT hasSubsequenceUTF8('картошка', 'кошка');┌─hasSubsequenceUTF8('картошка', 'кошка')─┐
│ 1 │
└─────────────────────────────────────────┘Subsequência não correspondente
SELECT hasSubsequenceUTF8('картошка', 'апельсин');┌─hasSubsequenceUTF8('картошка', 'апельсин')─┐
│ 0 │
└────────────────────────────────────────────┘hasToken
Introduzido em: v20.1.0
Verifica se o token informado está presente no haystack.
Usa splitByNonAlpha como tokenizador, ou seja, um token é definido como a maior subsequência possível de caracteres consecutivos [0-9A-Za-z_] (números, caracteres ASCII e underscore).
Sintaxe
hasToken(haystack, token)Argumentos
haystack— String na qual será feita a busca.Stringtoken— Token a ser procurado.const String
Valor retornado
Retorna 1 se o token for encontrado; caso contrário, 0. UInt8
Exemplos
Busca por token
SELECT hasToken('clickhouse test', 'test')┌─hasToken('clickhouse test', 'test')─┐
│ 1 │
└─────────────────────────────────────┘hasTokenCaseInsensitive
Introduzido em: v20.1.0
Realiza uma busca sem diferenciar maiúsculas de minúsculas por needle em haystack usando o índice tokenbf_v1.
Sintaxe
hasTokenCaseInsensitive(haystack, needle)Argumentos
- Nenhum.
Valor retornado
Exemplos
hasTokenCaseInsensitiveOrNull
Introduzido em: v23.1.0
Realiza uma busca por needle em haystack sem diferenciar maiúsculas de minúsculas, usando o índice tokenbf_v1. Retorna NULL se needle estiver malformado.
Sintaxe
hasTokenCaseInsensitiveOrNull(haystack, needle)Argumentos
- Nenhum.
Valor retornado
Exemplos
hasTokenOrNull
Introduzido em: v20.1.0
Semelhante a hasToken, mas retorna NULL se o token estiver malformado.
Sintaxe
hasTokenOrNull(haystack, token)Argumentos
haystack— String na qual será feita a busca. Deve ser constante.Stringtoken— Token a ser buscado.const String
Valor retornado
Retorna 1 se o token for encontrado, 0 caso contrário, NULL se o token estiver malformado. Nullable(UInt8)
Exemplos
Exemplo de uso
SELECT hasTokenOrNull('apple banana cherry', 'ban ana');┌─hasTokenOrNull('apple banana cherry', 'ban ana')─┐
│ ᴺᵁᴸᴸ │
└──────────────────────────────────────────────────┘highlight
Introduzido em: v26.4.0
Destaca ocorrências de termos de busca em uma string, envolvendo-as com tags HTML.
A função realiza correspondência ASCII sem diferenciar maiúsculas de minúsculas. Se vários termos de busca se sobrepuserem ou estiverem adjacentes no texto, as regiões correspondentes serão mescladas em um único trecho destacado.
Sintaxe
highlight(haystack, needles[, open_tag, close_tag])Argumentos
haystack— O texto no qual pesquisar.StringouFixedStringneedles— Um array de termos de pesquisa a serem destacados.const Array(String)open_tag— A tag de abertura a ser inserida antes de cada ocorrência. Padrão:<em>.const Stringclose_tag— A tag de fechamento a ser inserida após cada ocorrência. Padrão:</em>.const String
Valor retornado
Retorna o texto de entrada com os termos encontrados delimitados pelas tags especificadas. String
Exemplos
Destaque básico
SELECT highlight('The quick brown fox', ['quick', 'fox'])┌─highlight('The quick brown fox', ['quick', 'fox'])─┐
│ The <em>quick</em> brown <em>fox</em> │
└────────────────────────────────────────────────────┘Tags personalizadas
SELECT highlight('Hello World', ['hello'], '<b>', '</b>')┌─highlight('Hello World', ['hello'], '<b>', '</b>')─┐
│ <b>Hello</b> World │
└────────────────────────────────────────────────────┘ilike
Introduzido em: v20.6.0
Como like, mas faz a busca sem diferenciar maiúsculas de minúsculas. Suporta a cláusula opcional ESCAPE (consulte like).
Sintaxe
ilike(haystack, pattern[, escape_character])
-- haystack ILIKE pattern [ESCAPE 'escape_character']Argumentos
haystack— String em que a busca é realizada.StringouFixedStringpattern— padrão LIKE usado para correspondência.Stringescape_character— String opcional de um único caractere usada como caractere de escape em vez de\. Padrão:\.String
Valor retornado
Retorna 1 se a string corresponder ao padrão LIKE (sem diferenciar maiúsculas de minúsculas); caso contrário, 0. UInt8
Exemplos
Exemplo de uso
SELECT ilike('ClickHouse', '%house%');┌─ilike('ClickHouse', '%house%')─┐
│ 1 │
└────────────────────────────────┘like
Introduzido em: v1.1.0
Retorna se a string haystack corresponde à expressão LIKE pattern.
Uma expressão LIKE pode conter caracteres normais e os seguintes metassímbolos:
%indica uma quantidade arbitrária de caracteres arbitrários (incluindo zero caracteres)._indica um único caractere arbitrário.\é usado para escapar os literais%,_e\.
A correspondência é baseada em UTF-8; por exemplo, _ corresponde ao ponto de código Unicode ¥, que em UTF-8 é representado por dois bytes.
Se o haystack ou a expressão LIKE não forem UTF-8 válidos, o comportamento será indefinido.
Nenhuma normalização Unicode automática é realizada; você pode usar as funções normalizeUTF8* para isso.
Para corresponder a %, _ e \ literais (que são metacaracteres de LIKE), prefixe-os com uma barra invertida: \%, \_ e \\.
A barra invertida perde seu significado especial (ou seja, é interpretada literalmente) se preceder um caractere diferente de %, _ ou \.
Para expressões LIKE no formato %needle%, a função é tão rápida quanto a função position.
Todas as outras expressões LIKE são convertidas internamente em uma expressão regular e executadas com desempenho semelhante ao da função match.
cláusula ESCAPE
A cláusula ESCAPE opcional especifica um caractere de escape personalizado (deve ser um único caractere ASCII).
Quando especificado, o caractere de escape personalizado substitui a barra invertida padrão para escapar os metacaracteres % e _.
O caractere de escape pode escapar três coisas: % (porcentagem literal), _ (sublinhado literal) e ele mesmo (caractere de escape literal).
Quando um caractere de escape personalizado é usado, a barra invertida não tem significado especial e é tratada como um caractere literal.
Sintaxe
like(haystack, pattern[, escape_character])
-- haystack LIKE pattern [ESCAPE 'escape_character']Argumentos
haystack— String em que a busca é realizada.StringouFixedStringpattern— PadrãoLIKEusado na correspondência. Pode conter%(corresponde a qualquer número de caracteres),_(corresponde a um único caractere) e\para escape.Stringescape_character— String opcional de um único caractere a ser usada como caractere de escape em vez de\. Padrão:\.String
Valor retornado
Retorna 1 se a string corresponder ao padrão LIKE; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
SELECT like('ClickHouse', '%House');┌─like('ClickHouse', '%House')─┐
│ 1 │
└──────────────────────────────┘Curinga de caractere único
SELECT like('ClickHouse', 'Click_ouse');┌─like('ClickHouse', 'Click_ouse')─┐
│ 1 │
└──────────────────────────────────┘Padrão não correspondente
SELECT like('ClickHouse', '%SQL%');┌─like('ClickHouse', '%SQL%')─┐
│ 0 │
└─────────────────────────────┘Cláusula ESCAPE
SELECT '50%off' LIKE '50#%off' ESCAPE '#';┌─like('50%off', '50#%off', '#')─┐
│ 1 │
└────────────────────────────────┘locate
Introduzido em: v18.16.0
Como position, mas com os argumentos haystack e locate em ordem inversa.
Sintaxe
locate(needle, haystack[, start_pos])Argumentos
needle— Substring a ser procurada.Stringhaystack— String na qual a busca é realizada.StringouEnumstart_pos— Opcional. Posição (baseada em 1) emhaystacka partir da qual a busca começa.UInt
Valor retornado
Retorna a posição inicial em bytes, contando a partir de 1, se a substring for encontrada; 0 se a substring não for encontrada. UInt64
Exemplos
Uso básico
SELECT locate('ca', 'abcabc')┌─locate('ca', 'abcabc')─┐
│ 3 │
└────────────────────────┘match
Introduzido em: v1.1.0
Verifica se uma string fornecida corresponde ao padrão de expressão regular informado.
Esta função usa a biblioteca de expressões regulares RE2. Consulte re2 para ver a sintaxe compatível.
A correspondência funciona assumindo UTF-8; por exemplo, ¥ usa dois bytes internamente, mas a correspondência o trata como um único ponto de código.
A expressão regular não deve conter bytes NULL.
Se o haystack ou o padrão não forem UTF-8 válidos, o comportamento será indefinido.
Ao contrário do comportamento padrão do re2, . corresponde a quebras de linha. Para desativar isso, prefixe o padrão com (?-s).
O padrão não é ancorado. Para corresponder à string inteira, ancore o padrão usando ^ e $.
Se você só quiser procurar substrings, use as funções like ou position, que são muito mais rápidas do que esta função.
Sintaxe alternativa do operador: haystack REGEXP pattern ou haystack ~ pattern (estilo PostgreSQL).
Sintaxe
match(haystack, pattern)Aliases: REGEXP_MATCHES
Argumentos
haystack— String na qual o padrão é buscado.Stringpattern— Padrão de expressão regular. Pode ser uma constante ou vir de uma coluna.String
Valor retornado
Retorna 1 se o padrão corresponder, 0 caso contrário. UInt8
Exemplos
Correspondência de padrões simples
SELECT match('Hello World', 'Hello.*')┌─match('Hello World', 'Hello.*')─┐
│ 1 │
└─────────────────────────────────┘Padrão não corresponde
SELECT match('Hello World', 'goodbye.*')┌─match('Hello World', 'goodbye.*')─┐
│ 0 │
└───────────────────────────────────┘Correspondência com substring
SELECT match('abcde', 'b.*d'), match('abcde', '^b.*d$')┌─match('abcde', 'b.*d')─┬─match('abcde', '^b.*d$')─┐
│ 1 │ 0 │
└────────────────────────┴──────────────────────────┘matchCaseInsensitive
Introduzido em: v26.8.0
Semelhante a match, mas faz correspondência sem diferenciar maiúsculas de minúsculas.
Esta função usa a biblioteca de expressões regulares RE2. Consulte re2 para ver a sintaxe compatível.
Sintaxe alternativa do operador: haystack ~* pattern (no estilo PostgreSQL).
Sintaxe
matchCaseInsensitive(haystack, pattern)
-- haystack ~* patternArgumentos
haystack— String na qual o padrão é buscado.Stringpattern— Padrão de expressão regular. Pode ser uma constante ou vir de uma coluna.String
Valor retornado
Retorna 1 se o padrão corresponder sem diferenciar maiúsculas de minúsculas, 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT matchCaseInsensitive('Hello World', 'hello.*'), 'Hello World' ~┌─matchCaseInsensitive('Hello World', 'hello.*')─┬─matchCaseInsensitive('Hello World', 'HELLO.*')─┐
│ 1 │ 1 │
└────────────────────────────────────────────────┴────────────────────────────────────────────────┘multiFuzzyMatchAllIndices
Introduzido em: v20.1.0
Semelhante a multiFuzzyMatchAny, mas retorna o array com todos os índices, em qualquer ordem, que correspondem ao haystack dentro de uma distância de edição constante.
Sintaxe
multiFuzzyMatchAllIndices(haystack, distance, [pattern1, pattern2, ..., patternN])Argumentos
haystack— String na qual a busca é realizada.Stringdistance— A distância máxima de edição para correspondência aproximada.UInt8pattern— Array de padrões a serem correspondidos.Array(String)
Valor retornado
Retorna um array com todos os índices (a partir de 1) que correspondem ao haystack dentro da distância de edição especificada, em qualquer ordem. Retorna um array vazio se nenhuma correspondência for encontrada. Array(UInt64)
Exemplos
Exemplo de uso
SELECT multiFuzzyMatchAllIndices('ClickHouse', 2, ['ClickHouse', 'ClckHouse', 'ClickHose', 'House']);┌─multiFuzzyMatchAllIndices('ClickHouse', 2, ['ClickHouse', 'ClckHouse', 'ClickHose', 'House'])─┐
│ [3,1,4,2] │
└───────────────────────────────────────────────────────────────────────────────────────────────┘multiFuzzyMatchAny
Introduzido em: v20.1.0
Como multiMatchAny, mas retorna 1 se algum padrão corresponder à haystack dentro de uma distância de edição constante.
Esta função depende de uma funcionalidade experimental da biblioteca hyperscan e pode ser lenta em alguns casos extremos.
O desempenho depende do valor da distância de edição e dos padrões usados, mas o custo é sempre maior em comparação com as variantes sem correspondência difusa.
Sintaxe
multiFuzzyMatchAny(haystack, distance, [pattern1, pattern2, ..., patternN])Argumentos
haystack— String na qual a busca é realizada.Stringdistance— A distância máxima de edição para correspondência aproximada.UInt8pattern— Opcional. Um array de padrões para comparar.Array(String)
Valor retornado
Retorna 1 se algum padrão corresponder ao haystack dentro da distância de edição especificada; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
SELECT multiFuzzyMatchAny('ClickHouse', 2, ['ClickHouse', 'ClckHouse', 'ClickHose']);┌─multiFuzzyMatchAny('ClickHouse', 2, ['ClickHouse', 'ClckHouse', 'ClickHose'])─┐
│ 1 │
└───────────────────────────────────────────────────────────────────────────────┘multiFuzzyMatchAnyIndex
Introduzido em: v20.1.0
Como multiFuzzyMatchAny, mas retorna qualquer índice que corresponda ao haystack com uma distância de edição constante.
Sintaxe
multiFuzzyMatchAnyIndex(haystack, distance, [pattern1, pattern2, ..., patternn])Argumentos
haystack— String na qual a busca é realizada.Stringdistance— A distância máxima de edição para correspondência aproximada.UInt8pattern— Array de padrões para correspondência.Array(String)
Valor retornado
Retorna o índice (a partir de 1) de qualquer padrão que corresponda ao haystack dentro da distância de edição especificada; caso contrário, 0. UInt64
Exemplos
Exemplo de uso
SELECT multiFuzzyMatchAnyIndex('ClickHouse', 2, ['ClckHouse', 'ClickHose', 'ClickHouse']);┌─multiFuzzyMatchAnyIndex('ClickHouse', 2, ['ClckHouse', 'ClickHose', 'ClickHouse'])─┐
│ 2 │
└────────────────────────────────────────────────────────────────────────────────────┘multiMatchAllIndices
Introduzido em: v20.1.0
Como multiMatchAny, mas retorna o array com todos os índices que correspondem ao haystack, em qualquer ordem.
Sintaxe
multiMatchAllIndices(haystack, [pattern1, pattern2, ..., patternn])Argumentos
haystack— String em que a busca é realizada.Stringpattern— Expressões regulares usadas na correspondência.String
Valor retornado
Array com todos os índices (a partir de 1) que encontram correspondência no haystack, em qualquer ordem. Retorna um array vazio se nenhuma correspondência for encontrada. Array(UInt64)
Exemplos
Exemplo de uso
SELECT multiMatchAllIndices('ClickHouse', ['[0-9]', 'House', 'Click', 'ouse']);┌─multiMatchAllIndices('ClickHouse', ['[0-9]', 'House', 'Click', 'ouse'])─┐
│ [3,2,4] │
└─────────────────────────────────────────────────────────────────────────┘multiMatchAny
Introduzido em: v20.1.0
Verifica se pelo menos um entre vários padrões de expressão regular corresponde à string de entrada.
Se você quiser apenas pesquisar várias substrings em uma string, pode usar a função multiSearchAny — ela funciona muito mais rápido do que esta função.
Sintaxe
multiMatchAny(haystack, pattern1[, pattern2, ...])Argumentos
haystack— String em que os padrões são buscados.Stringpattern1[, pattern2, ...]— Um array de um ou mais padrões de expressão regular.Array(String)
Valor retornado
Retorna 1 se algum padrão corresponder, 0 caso contrário. UInt8
Exemplos
Correspondência com múltiplos padrões
SELECT multiMatchAny('Hello World', ['Hello.*', 'foo.*'])┌─multiMatchAny('Hello World', ['Hello.*', 'foo.*'])─┐
│ 1 │
└────────────────────────────────────────────────────┘Nenhum padrão corresponde
SELECT multiMatchAny('Hello World', ['goodbye.*', 'foo.*'])┌─multiMatchAny('Hello World', ['goodbye.*', 'foo.*'])─┐
│ 0 │
└──────────────────────────────────────────────────────┘multiMatchAnyIndex
Introduzido em: v20.1.0
Como multiMatchAny, mas retorna qualquer índice que corresponda à string de entrada.
Sintaxe
multiMatchAnyIndex(haystack, [pattern1, pattern2, ..., patternn])Argumentos
haystack— String na qual a busca é realizada.Stringpattern— Expressões regulares a serem correspondidas.Array(String)
Valor retornado
Retorna o índice (a partir de 1) do primeiro padrão que corresponde, ou 0 se nenhuma correspondência for encontrada. UInt64
Exemplos
Exemplo de uso
SELECT multiMatchAnyIndex('ClickHouse', ['[0-9]', 'House', 'Click']);┌─multiMatchAnyIndex('ClickHouse', ['[0-9]', 'House', 'Click'])─┐
│ 3 │
└───────────────────────────────────────────────────────────────┘multiSearchAllPositions
Introduzido em: v20.1.0
Como position, mas retorna um array com as posições (em bytes, começando em 1) de várias substrings needle em uma string haystack.
Todas as funções multiSearch*() suportam no máximo 2^8 needles.
Sintaxe
multiSearchAllPositions(haystack, needle1[, needle2, ...])Argumentos
haystack— String na qual a busca é feita.Stringneedle1[, needle2, ...]— Um array com uma ou mais substrings a serem buscadas.Array(String)
Valor retornado
Retorna um array com a posição inicial em bytes, contada a partir de 1, se a substring for encontrada, ou 0 se a substring não for encontrada. Array(UInt64)
Exemplos
Busca por múltiplas substrings
SELECT multiSearchAllPositions('Hello, World!', ['hello', '!', 'world'])┌─multiSearchAllPositions('Hello, World!', ['hello', '!', 'world'])─┐
│ [0,13,0] │
└───────────────────────────────────────────────────────────────────┘multiSearchAllPositionsCaseInsensitive
Introduzido em: v20.1.0
Como multiSearchAllPositions, mas não diferencia maiúsculas de minúsculas.
Sintaxe
multiSearchAllPositionsCaseInsensitive(haystack, needle1[, needle2, ...])Argumentos
haystack— String na qual a busca é realizada.Stringneedle1[, needle2, ...]— Um array de uma ou mais substrings a serem pesquisadas.Array(String)
Valor retornado
Retorna um array com a posição inicial em bytes, contando a partir de 1 (se a substring for encontrada), ou 0 se a substring não for encontrada. Array(UInt64)
Exemplos
Multibusca sem distinção entre maiúsculas e minúsculas
SELECT multiSearchAllPositionsCaseInsensitive('ClickHouse',['c','h'])┌─multiSearchAllPositionsCaseInsensitive('ClickHouse', ['c', 'h'])─┐
│ [1,6] │
└──────────────────────────────────────────────────────────────────┘multiSearchAllPositionsCaseInsensitiveUTF8
Introduzido em: v20.1.0
Como multiSearchAllPositionsUTF8, mas não diferencia maiúsculas de minúsculas.
Sintaxe
multiSearchAllPositionsCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— string codificada em UTF-8 na qual a busca é realizada.Stringneedle— substrings codificadas em UTF-8 que serão buscadas.Array(String)
Valor retornado
Array com as posições iniciais em bytes, contadas a partir de 1 (se a substring for encontrada). Retorna 0 se a substring não for encontrada. Array
Exemplos
Busca UTF-8 sem diferenciar maiúsculas de minúsculas
SELECT multiSearchAllPositionsCaseInsensitiveUTF8('Здравствуй, мир!', ['здравствуй', 'МИР']);┌─multiSearchAllPositionsCaseInsensitiveUTF8('Здравствуй, мир!', ['здравствуй', 'МИР'])─┐
│ [1,13] │
└───────────────────────────────────────────────────────────────────────────────────────┘multiSearchAllPositionsUTF8
Introduzido em: v20.1.0
Como multiSearchAllPositions, mas pressupõe que haystack e as substrings needle sejam strings codificadas em UTF-8.
Sintaxe
multiSearchAllPositionsUTF8(haystack, needle1[, needle2, ...])Argumentos
haystack— String codificada em UTF-8 na qual a busca é realizada.Stringneedle1[, needle2, ...]— Um array de substrings codificadas em UTF-8 a serem procuradas.Array(String)
Valor retornado
Retorna um array com as posições iniciais, em bytes e contadas a partir de 1 (se a substring for encontrada), ou 0, se a substring não for encontrada. Array
Exemplos
Busca múltipla em UTF-8
SELECT multiSearchAllPositionsUTF8('ClickHouse',['C','H'])┌─multiSearchAllPositionsUTF8('ClickHouse', ['C', 'H'])─┐
│ [1,6] │
└───────────────────────────────────────────────────────┘multiSearchAny
Introduzido em: v20.1.0
Verifica se pelo menos uma das várias strings needle corresponde à string haystack.
As funções multiSearchAnyCaseInsensitive, multiSearchAnyUTF8 e multiSearchAnyCaseInsensitiveUTF8 fornecem variantes sem distinção entre maiúsculas e minúsculas e/ou em UTF-8 desta função.
Sintaxe
multiSearchAny(haystack, needle1[, needle2, ...])Argumentos
haystack— String em que a busca é realizada.Stringneedle1[, needle2, ...]— Um array de substrings a serem pesquisadas.Array(String)
Valor retornado
Retorna 1 se houver pelo menos uma correspondência; caso contrário, 0. UInt8
Exemplos
Busca por qualquer correspondência
SELECT multiSearchAny('ClickHouse',['C','H'])┌─multiSearchAny('ClickHouse', ['C', 'H'])─┐
│ 1 │
└──────────────────────────────────────────┘multiSearchAnyCaseInsensitive
Introduzido em: v20.1.0
Como multiSearchAny, mas sem diferenciar maiúsculas de minúsculas.
Sintaxe
multiSearchAnyCaseInsensitive(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— String em que a busca é realizada.Stringneedle— Substrings a serem pesquisadas.Array(String)
Valor retornado
Retorna 1 se houver pelo menos uma correspondência sem distinção entre maiúsculas e minúsculas; caso contrário, retorna 0. UInt8
Exemplos
Busca sem distinção entre maiúsculas e minúsculas
SELECT multiSearchAnyCaseInsensitive('ClickHouse',['c','h'])┌─multiSearchAnyCaseInsensitive('ClickHouse', ['c', 'h'])─┐
│ 1 │
└─────────────────────────────────────────────────────────┘multiSearchAnyCaseInsensitiveUTF8
Introduzido em: v20.1.0
Como multiSearchAnyUTF8, mas sem diferenciar maiúsculas de minúsculas.
Sintaxe
multiSearchAnyCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— string UTF-8 na qual a busca é realizada.Stringneedle— substrings UTF-8 a serem procuradas.Array(String)
Valor retornado
Retorna 1 se houver pelo menos uma correspondência sem diferenciar maiúsculas de minúsculas; caso contrário, retorna 0. UInt8
Exemplos
Dada a string UTF-8 'Здравствуйте', verifique se o caractere 'з' (minúsculo) está presente
SELECT multiSearchAnyCaseInsensitiveUTF8('Здравствуйте',['з'])┌─multiSearchAnyCaseInsensitiveUTF8('Здравствуйте', ['з'])─┐
│ 1 │
└──────────────────────────────────────────────────────────┘multiSearchAnyUTF8
Introduzido em: v20.1.0
Semelhante a multiSearchAny, mas assume que haystack e as substrings needle são strings codificadas em UTF-8.
Sintaxe
multiSearchAnyUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— string em UTF-8 na qual a busca é realizada.Stringneedle— substrings em UTF-8 a serem buscadas.Array(String)
Valor retornado
Retorna 1 se houver pelo menos uma correspondência; caso contrário, retorna 0. UInt8
Exemplos
Dada '你好,世界' ('Olá, mundo') como uma string em UTF-8, verifique se a string contém algum caractere 你 ou 界
SELECT multiSearchAnyUTF8('你好,世界', ['你', '界']) AS result┌─result─┐
│ 1 │
└────────┘multiSearchFirstIndex
Introduzido em: v20.1.0
Procura várias strings needle em uma string haystack (diferencia maiúsculas de minúsculas) e retorna o índice, com base em 1, da primeira needle encontrada.
Sintaxe
multiSearchFirstIndex(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— A string em que a busca será feita.Stringneedles— Array de strings a serem pesquisadas.Array(String)
Valor retornado
Retorna o índice com base em 1 (posição no array needles) da primeira needle encontrada em haystack. Retorna 0 se nenhuma needle for encontrada. A busca diferencia maiúsculas de minúsculas. UInt64
Exemplos
Exemplo de uso
SELECT multiSearchFirstIndex('ClickHouse Database', ['Click', 'Database', 'Server']);┌─multiSearchFirstIndex('ClickHouse Database', ['Click', 'Database', 'Server'])─┐
│ 1 │
└───────────────────────────────────────────────────────────────────────────────┘Comportamento com diferenciação entre maiúsculas e minúsculas
SELECT multiSearchFirstIndex('ClickHouse Database', ['CLICK', 'Database', 'Server']);┌─multiSearchFirstIndex('ClickHouse Database', ['CLICK', 'Database', 'Server'])─┐
│ 2 │
└───────────────────────────────────────────────────────────────────────────────┘Nenhuma correspondência encontrada
SELECT multiSearchFirstIndex('Hello World', ['goodbye', 'test']);┌─multiSearchFirstIndex('Hello World', ['goodbye', 'test'])─┐
│ 0 │
└───────────────────────────────────────────────────────────┘multiSearchFirstIndexCaseInsensitive
Introduzido em: v20.1.0
Retorna o índice i (a partir de 1) da needle_i localizada mais à esquerda na string haystack e 0 caso contrário.
Não diferencia maiúsculas de minúsculas.
Sintaxe
multiSearchFirstIndexCaseInsensitive(haystack, [needle1, needle2, ..., needleN]Argumentos
haystack— String em que a busca é realizada.Stringneedle— Substrings a serem buscadas.Array(String)
Valor retornado
Retorna o índice (a partir de 1) da substring encontrada mais à esquerda. Caso contrário, retorna 0 se não houver correspondência. UInt8
Exemplos
Exemplo de uso
SELECT multiSearchFirstIndexCaseInsensitive('hElLo WoRlD', ['World', 'Hello']);┌─multiSearchFirstIndexCaseInsensitive('hElLo WoRlD', ['World', 'Hello'])─┐
│ 1 │
└─────────────────────────────────────────────────────────────────────────┘multiSearchFirstIndexCaseInsensitiveUTF8
Introduzido em: v20.1.0
Procura várias strings needle em uma string haystack, sem diferenciar maiúsculas de minúsculas e com suporte à codificação UTF-8, e retorna o índice, começando em 1, da primeira needle encontrada.
Sintaxe
multiSearchFirstIndexCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— A string em que a busca é feita.Stringneedles— Array de strings a serem buscadas.Array(String)
Valor retornado
Retorna o índice com base em 1 (posição no array needles) da primeira string encontrada em haystack. Retorna 0 se nenhuma string for encontrada. A busca não diferencia maiúsculas de minúsculas e respeita a codificação de caracteres UTF-8. UInt64
Exemplos
Exemplo de uso
SELECT multiSearchFirstIndexCaseInsensitiveUTF8('ClickHouse Database', ['CLICK', 'data', 'server']);┌─multiSearchFirstIndexCaseInsensitiveUTF8('ClickHouse Database', ['CLICK', 'data', 'server'])─┐
│ 1 │
└──────────────────────────────────────────────────────────────────────────────────────────────┘Tratamento de maiúsculas/minúsculas em UTF-8
SELECT multiSearchFirstIndexCaseInsensitiveUTF8('Привет Мир', ['мир', 'ПРИВЕТ']);┌─multiSearchFirstIndexCaseInsensitiveUTF8('Привет Мир', ['мир', 'ПРИВЕТ'])─┐
│ 1 │
└───────────────────────────────────────────────────────────────────────────┘Nenhuma correspondência encontrada
SELECT multiSearchFirstIndexCaseInsensitiveUTF8('Hello World', ['goodbye', 'test']);┌─multiSearchFirstIndexCaseInsensitiveUTF8('Hello World', ['goodbye', 'test'])─┐
│ 0 │
└──────────────────────────────────────────────────────────────────────────────┘multiSearchFirstIndexUTF8
Introduzido em: v20.1.0
Retorna o índice i (a partir de 1) da needle_i encontrada na posição mais à esquerda na string haystack, e 0 caso contrário.
Pressupõe que haystack e needle sejam strings codificadas em UTF-8.
Sintaxe
multiSearchFirstIndexUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— string em UTF-8 na qual a busca é realizada.Stringneedle— Array de substrings em UTF-8 a serem procuradas.Array(String)
Valor retornado
Retorna o índice (a partir de 1) da needle encontrada mais à esquerda. Caso contrário, retorna 0 se não houver correspondência. UInt8
Exemplos
Exemplo de uso
SELECT multiSearchFirstIndexUTF8('Здравствуйте мир', ['мир', 'здравствуйте']);┌─multiSearchFirstIndexUTF8('Здравствуйте мир', ['мир', 'здравствуйте'])─┐
│ 1 │
└────────────────────────────────────────────────────────────────────────┘multiSearchFirstPosition
Introduzido em: v20.1.0
Como position, mas retorna a posição mais à esquerda em uma string haystack que corresponde a qualquer uma de várias strings needle.
As funções multiSearchFirstPositionCaseInsensitive, multiSearchFirstPositionUTF8 e multiSearchFirstPositionCaseInsensitiveUTF8 fornecem variantes sem distinção entre maiúsculas e minúsculas e/ou em UTF-8 desta função.
Sintaxe
multiSearchFirstPosition(haystack, needle1[, needle2, ...])Argumentos
haystack— String na qual a busca é realizada.Stringneedle1[, needle2, ...]— Um array de uma ou mais substrings a serem buscadas.Array(String)
Valor retornado
Retorna o deslocamento da ocorrência mais à esquerda em uma string haystack que corresponda a qualquer uma de várias strings needle; caso contrário, 0, se não houver correspondência. UInt64
Exemplos
Busca da primeira posição
SELECT multiSearchFirstPosition('Hello World',['llo', 'Wor', 'ld'])┌─multiSearchFirstPosition('Hello World', ['llo', 'Wor', 'ld'])─┐
│ 3 │
└───────────────────────────────────────────────────────────────┘multiSearchFirstPositionCaseInsensitive
Introduzido em: v20.1.0
Como multiSearchFirstPosition, mas não diferencia maiúsculas de minúsculas.
Sintaxe
multiSearchFirstPositionCaseInsensitive(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— String em que a busca é realizada.Stringneedle— Array de substrings a serem buscadas.Array(String)
Valor retornado
Retorna o deslocamento na string haystack que corresponde a qualquer uma das strings needle. Retorna 0 se não houver correspondência. UInt64
Exemplos
Primeira posição sem diferenciar maiúsculas de minúsculas
SELECT multiSearchFirstPositionCaseInsensitive('HELLO WORLD',['wor', 'ld', 'ello'])┌─multiSearchFirstPositionCaseInsensitive('HELLO WORLD', ['wor', 'ld', 'ello'])─┐
│ 2 │
└───────────────────────────────────────────────────────────────────────────────┘multiSearchFirstPositionCaseInsensitiveUTF8
Introduzido em: v20.1.0
Como multiSearchFirstPosition, mas considera haystack e needle como strings UTF-8 e não diferencia maiúsculas de minúsculas.
Sintaxe
multiSearchFirstPositionCaseInsensitiveUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— string UTF-8 na qual a busca é realizada.Stringneedle— Array de substrings UTF-8 a serem procuradas.Array(String)
Valor retornado
Retorna o deslocamento mais à esquerda em uma string haystack que corresponde a qualquer uma das várias strings needle, sem diferenciar maiúsculas de minúsculas. Retorna 0 se não houver correspondência. UInt64
Exemplos
Encontre o deslocamento mais à esquerda na string UTF-8 'Здравствуй, мир' ('Hello, world') que corresponde a qualquer uma das substrings fornecidas
SELECT multiSearchFirstPositionCaseInsensitiveUTF8('Здравствуй, мир', ['МИР', 'вст', 'Здра'])┌─multiSearchFirstPositionCaseInsensitiveUTF8('Здравствуй, мир', ['МИР', 'вст', 'Здра'])─┐
│ 1 │
└────────────────────────────────────────────────────────────────────────────────────────┘multiSearchFirstPositionUTF8
Introduzido em: v20.1.0
Assim como multiSearchFirstPosition, mas pressupõe que haystack e needle sejam strings UTF-8.
Sintaxe
multiSearchFirstPositionUTF8(haystack, [needle1, needle2, ..., needleN])Argumentos
haystack— string UTF-8 na qual a busca é realizada.Stringneedle— Array de substrings UTF-8 a serem procuradas.Array(String)
Valor retornado
Deslocamento da ocorrência mais à esquerda em uma string haystack que corresponde a qualquer uma das várias strings needle. Retorna 0 se não houver correspondência. UInt64
Exemplos
Encontre o deslocamento da ocorrência mais à esquerda na string UTF-8 'Здравствуй, мир' ('Hello, world') que corresponde a qualquer uma das strings needle fornecidas
SELECT multiSearchFirstPositionUTF8('Здравствуй, мир',['мир', 'вст', 'авст'])┌─multiSearchFirstPositionUTF8('Здравствуй, мир', ['мир', 'вст', 'авст'])─┐
│ 4 │
└─────────────────────────────────────────────────────────────────────────┘ngramDistance
Introduzido em: v20.1.0
Calcula a distância de 4-gramas entre duas strings. Para isso, conta a diferença simétrica entre dois multiconjuntos de 4-gramas e a normaliza pela soma de suas cardinalidades. Quanto menor o valor retornado, mais semelhantes são as strings.
Para busca sem diferenciar maiúsculas de minúsculas e/ou no formato UTF-8, use as funções ngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8.
Sintaxe
ngramDistance(haystack, needle)Argumentos
Valor retornado
Retorna um valor Float32 entre 0 e 1. Quanto menor o valor retornado, mais semelhantes são as strings. Float32
Exemplos
Calcular a distância por 4-gramas
SELECT ngramDistance('ClickHouse', 'ClickHouses')┌─ngramDistance('ClickHouse', 'ClickHouses')─┐
│ 0.06666667 │
└────────────────────────────────────────────┘ngramDistanceCaseInsensitive
Introduzido em: v20.1.0
Fornece uma variante de ngramDistance sem diferenciar maiúsculas de minúsculas.
Calcula a distância de 4-gramas entre duas strings, ignorando maiúsculas e minúsculas.
Quanto menor o valor retornado, mais semelhantes são as strings.
Sintaxe
ngramDistanceCaseInsensitive(haystack, needle)Argumentos
Valor retornado
Retorna um número Float32 entre 0 e 1. Float32
Exemplos
Distância de 4-gramas sem diferenciar maiúsculas de minúsculas
SELECT ngramDistanceCaseInsensitive('ClickHouse','clickhouse')┌─ngramDistanceCaseInsensitive('ClickHouse', 'clickhouse')─┐
│ 0 │
└──────────────────────────────────────────────────────────┘ngramDistanceCaseInsensitiveUTF8
Introduzido em: v20.1.0
Fornece uma variante UTF-8 de ngramDistance sem diferenciar maiúsculas de minúsculas.
Pressupõe que as strings needle e haystack sejam codificadas em UTF-8 e ignora maiúsculas e minúsculas.
Calcula a distância de 3-gramas entre duas strings UTF-8, ignorando maiúsculas e minúsculas.
Quanto menor o valor retornado, mais semelhantes são as strings.
Sintaxe
ngramDistanceCaseInsensitiveUTF8(haystack, needle)Argumentos
haystack— Primeira string de comparação codificada em UTF-8.Stringneedle— Segunda string de comparação codificada em UTF-8.String
Valor retornado
Retorna um número Float32 entre 0 e 1. Float32
Exemplos
Distância UTF-8 de 3 gramas sem diferenciar maiúsculas de minúsculas
SELECT ngramDistanceCaseInsensitiveUTF8('abcde','CDE')┌─ngramDistanceCaseInsensitiveUTF8('abcde', 'CDE')─┐
│ 0.5 │
└──────────────────────────────────────────────────┘ngramDistanceUTF8
Introduzido em: v20.1.0
Fornece uma variante em UTF-8 de ngramDistance.
Pressupõe que as strings needle e haystack sejam codificadas em UTF-8.
Calcula a distância de 3-gramas entre duas strings UTF-8.
Quanto menor o valor retornado, mais semelhantes são as strings.
Sintaxe
ngramDistanceUTF8(haystack, needle)Argumentos
haystack— Primeira string de comparação codificada em UTF-8.Stringneedle— Segunda string de comparação codificada em UTF-8.String
Valor retornado
Retorna um número Float32 entre 0 e 1. Float32
Exemplos
Distância de 3-gramas UTF-8
SELECT ngramDistanceUTF8('abcde','cde')┌─ngramDistanceUTF8('abcde', 'cde')─┐
│ 0.5 │
└───────────────────────────────────┘ngramSearch
Introduzido em: v20.1.0
Verifica se a distância de 4-gramas entre duas strings é menor ou igual a um determinado limiar.
Para busca sem distinção entre maiúsculas e minúsculas e/ou no formato UTF-8, use as funções ngramSearchCaseInsensitive, ngramSearchUTF8, ngramSearchCaseInsensitiveUTF8.
Sintaxe
ngramSearch(haystack, needle)Argumentos
Valor retornado
Retorna 1 se a distância de 4-gramas entre as strings for menor ou igual a um limiar (1.0 por padrão); caso contrário, retorna 0. UInt8
Exemplos
Busca com 4-gramas
SELECT ngramSearch('ClickHouse', 'Click')┌─ngramSearch('ClickHouse', 'Click')─┐
│ 1 │
└────────────────────────────────────┘ngramSearchCaseInsensitive
Introduzido em: v20.1.0
Fornece uma variante de ngramSearch que não diferencia maiúsculas de minúsculas.
Calcula a diferença não simétrica entre as strings needle e haystack, ou seja, o número de n-gramas da needle menos o número de n-gramas em comum, normalizado pelo número de n-gramas da needle.
Verifica se a distância de 4-gramas entre duas strings é menor ou igual a um determinado limiar, ignorando maiúsculas e minúsculas.
Sintaxe
ngramSearchCaseInsensitive(haystack, needle)Argumentos
Valor retornado
Retorna 1 se a distância de 4-gramas entre as strings for menor ou igual ao limiar (1.0 por padrão); caso contrário, retorna 0. UInt8
Exemplos
Busca sem distinção entre maiúsculas e minúsculas usando 4-gramas
SELECT ngramSearchCaseInsensitive('Hello World','hello')┌─ngramSearchCaseInsensitive('Hello World', 'hello')─┐
│ 1 │
└────────────────────────────────────────────────────┘ngramSearchCaseInsensitiveUTF8
Introduzido em: v20.1.0
Fornece uma variante UTF-8 de ngramSearch sem diferenciar maiúsculas de minúsculas.
Pressupõe que haystack e needle sejam strings UTF-8 e ignora diferenças entre maiúsculas e minúsculas.
Verifica se a distância de 3-gramas entre duas strings UTF-8 é menor ou igual a um determinado limite, sem diferenciar maiúsculas de minúsculas.
Sintaxe
ngramSearchCaseInsensitiveUTF8(haystack, needle)Argumentos
Valor retornado
Retorna 1 se a distância de 3-gramas entre as strings for menor ou igual a um limiar (1.0 por padrão), 0 caso contrário. UInt8
Exemplos
Busca UTF-8 sem diferenciar maiúsculas de minúsculas usando 3-gramas
SELECT ngramSearchCaseInsensitiveUTF8('абвГДЕёжз', 'АбвгдЕЁжз')┌─ngramSearchCaseInsensitiveUTF8('абвГДЕёжз', 'АбвгдЕЁжз')─┐
│ 0.57142854 │
└──────────────────────────────────────────────────────────┘ngramSearchUTF8
Introduzido em: v20.1.0
Fornece uma variante UTF-8 de ngramSearch.
Pressupõe que haystack e needle sejam strings em UTF-8.
Verifica se a distância de 3-gramas entre duas strings em UTF-8 é menor ou igual a um determinado limiar.
Sintaxe
ngramSearchUTF8(haystack, needle)Argumentos
Valor retornado
Retorna 1 se a distância de 3-gramas entre as strings for menor ou igual a um limiar (1.0 por padrão); caso contrário, 0. UInt8
Exemplos
Busca em UTF-8 usando 3-gramas
SELECT ngramSearchUTF8('абвгдеёжз', 'гдеёзд')┌─ngramSearchUTF8('абвгдеёжз', 'гдеёзд')─┐
│ 0.5 │
└────────────────────────────────────────┘notILike
Introduzido na versão: v20.6.0
Verifica se uma string não corresponde a um padrão, sem diferenciar maiúsculas de minúsculas. O padrão pode conter os caracteres especiais % e _ para correspondência com SQL LIKE. Suporta a cláusula opcional ESCAPE (consulte like).
Sintaxe
notILike(haystack, pattern[, escape_character])
-- haystack NOT ILIKE pattern [ESCAPE 'escape_character']Argumentos
haystack— A string de entrada na qual a busca é feita.StringouFixedStringpattern— O padrão SQL LIKE usado para correspondência.%corresponde a qualquer número de caracteres (incluindo zero),_corresponde a exatamente um caractere.Stringescape_character— String opcional de um único caractere a ser usada como caractere de escape em vez de\. Padrão:\.String
Valor retornado
Retorna 1 se a string não corresponder ao padrão (sem diferenciar maiúsculas de minúsculas); caso contrário, 0. UInt8
Exemplos
Exemplo de uso
SELECT notILike('ClickHouse', '%house%');┌─notILike('ClickHouse', '%house%')─┐
│ 0 │
└───────────────────────────────────┘notLike
Introduzido em: v1.1.0
Semelhante a like, mas com o resultado negado. Oferece suporte à cláusula opcional ESCAPE (consulte like).
Sintaxe
notLike(haystack, pattern[, escape_character])
-- haystack NOT LIKE pattern [ESCAPE 'escape_character']Argumentos
haystack— String em que a busca é realizada.StringeFixedStringpattern— PadrãoLIKEpara correspondência.Stringescape_character— String opcional de um único caractere para usar como caractere de escape em vez de\. Padrão:\.String
Valor retornado
Retorna 1 se a string não corresponder ao padrão LIKE; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
SELECT notLike('ClickHouse', '%House%');┌─notLike('ClickHouse', '%House%')─┐
│ 0 │
└──────────────────────────────────┘Padrão não correspondente
SELECT notLike('ClickHouse', '%SQL%');┌─notLike('ClickHouse', '%SQL%')─┐
│ 1 │
└────────────────────────────────┘notMatch
Introduzido em: v26.8.0
Semelhante a match, mas nega o resultado: verifica se a string não corresponde ao padrão de expressão regular.
Esta função usa a biblioteca de expressões regulares RE2. Consulte re2 para ver a sintaxe compatível.
Sintaxe alternativa do operador: haystack !~ pattern (estilo PostgreSQL).
Sintaxe
notMatch(haystack, pattern)
-- haystack !~ patternArgumentos
haystack— String na qual o padrão é buscado.Stringpattern— Padrão de expressão regular. Pode ser uma constante ou vir de uma coluna.String
Valor retornado
Retorna 0 se o padrão corresponder, 1 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT notMatch('Hello World', 'Hello.*'), 'Hello World' !┌─notMatch('Hello World', 'Hello.*')─┬─notMatch('Hello World', 'goodbye.*')─┐
│ 0 │ 1 │
└────────────────────────────────────┴──────────────────────────────────────┘notMatchCaseInsensitive
Introduzido em: v26.8.0
Semelhante a matchCaseInsensitive, mas nega o resultado: verifica se a string não corresponde ao padrão de expressão regular sem diferenciar maiúsculas de minúsculas.
Esta função usa a biblioteca de expressões regulares RE2. Consulte re2 para ver a sintaxe compatível.
Sintaxe alternativa do operador: haystack !~* pattern (no estilo PostgreSQL).
Sintaxe
notMatchCaseInsensitive(haystack, pattern)
-- haystack !~* patternArgumentos
haystack— String na qual o padrão é buscado.Stringpattern— Padrão de expressão regular. Pode ser uma constante ou vir de uma coluna.String
Valor retornado
Retorna 0 se o padrão corresponder sem diferenciar maiúsculas de minúsculas, 1 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT notMatchCaseInsensitive('Hello World', 'hello.*'), 'Hello World' !┌─notMatchCaseInsensitive('Hello World', 'hello.*')─┬─notMatchCaseInsensitive('Hello World', 'GOODBYE.*')─┐
│ 0 │ 1 │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘position
Introduzido na versão: v1.1.0
Retorna a posição (em bytes, começando em 1) de uma substring needle em uma string haystack.
Se a substring needle estiver vazia, aplicam-se as seguintes regras:
- se nenhum
start_posfor especificado: retorna1 - se
start_pos = 0: retorna1 - se
start_pos >= 1estart_pos <= length(haystack) + 1: retornastart_pos - caso contrário: retorna
0
As mesmas regras também se aplicam às funções locate, positionCaseInsensitive, positionUTF8 e positionCaseInsensitiveUTF8.
Sintaxe
position(haystack, needle[, start_pos])Argumentos
haystack— String em que a busca é realizada.StringouEnumneedle— Substring a ser procurada.Stringstart_pos— Posição emhaystack(começando em 1) na qual a busca se inicia. Opcional.UInt
Valor retornado
Retorna a posição inicial em bytes, contando a partir de 1, se a substring for encontrada; caso contrário, retorna 0 se a substring não for encontrada. UInt64
Exemplos
Uso básico
SELECT position('Hello, world!', '!')┌─position('Hello, world!', '!')─┐
│ 13 │
└────────────────────────────────┘Com o argumento start_pos
SELECT position('Hello, world!', 'o', 1), position('Hello, world!', 'o', 7)┌─position('Hello, world!', 'o', 1)─┬─position('Hello, world!', 'o', 7)─┐
│ 5 │ 9 │
└───────────────────────────────────┴───────────────────────────────────┘Sintaxe de needle IN haystack
SELECT 6 = position('/' IN s) FROM (SELECT 'Hello/World' AS s)┌─equals(6, position(s, '/'))─┐
│ 1 │
└─────────────────────────────┘Subcadeia com needle vazio
SELECT position('abc', ''), position('abc', '', 0), position('abc', '', 1), position('abc', '', 2), position('abc', '', 3), position('abc', '', 4), position('abc', '', 5)┌─position('abc', '')─┬─position('abc', '', 0)─┬─position('abc', '', 1)─┬─position('abc', '', 2)─┬─position('abc', '', 3)─┬─position('abc', '', 4)─┬─position('abc', '', 5)─┐
│ 1 │ 1 │ 1 │ 2 │ 3 │ 4 │ 0 │
└─────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┴────────────────────────┘positionCaseInsensitive
Introduzido em: v1.1.0
Como position, mas sem diferenciar maiúsculas de minúsculas.
Sintaxe
positionCaseInsensitive(haystack, needle[, start_pos])Aliases: instr
Argumentos
haystack— String em que a busca é realizada.StringouEnumneedle— Substring a ser procurada.Stringstart_pos— Opcional. Posição (indexada a partir de 1) emhaystackna qual a busca começa.UInt*
Valor retornado
Retorna a posição inicial em bytes, contando a partir de 1, se a substring for encontrada; caso contrário, retorna 0. UInt64
Exemplos
Busca sem diferenciar maiúsculas de minúsculas
SELECT positionCaseInsensitive('Hello, world!', 'hello')┌─positionCaseInsensitive('Hello, world!', 'hello')─┐
│ 1 │
└───────────────────────────────────────────────────┘positionCaseInsensitiveUTF8
Introduzido em: v1.1.0
Como positionUTF8, mas faz a busca sem diferenciar letras maiúsculas de minúsculas.
Sintaxe
positionCaseInsensitiveUTF8(haystack, needle[, start_pos])Argumentos
haystack— String na qual a busca é realizada.StringouEnumneedle— Substring a ser procurada.Stringstart_pos— Opcional. Posição (base 1) emhaystackna qual a busca começa.UInt*
Valor retornado
Retorna a posição inicial, em bytes e contando a partir de 1, se a substring for encontrada; caso contrário, retorna 0. UInt64
Exemplos
Busca UTF-8 sem diferenciar maiúsculas de minúsculas
SELECT positionCaseInsensitiveUTF8('Привет мир', 'МИР')┌─positionCaseInsensitiveUTF8('Привет мир', 'МИР')─┐
│ 8 │
└──────────────────────────────────────────────────┘positionUTF8
Introduzido em: v1.1.0
Como position, mas presume que haystack e needle sejam strings codificadas em UTF-8.
Sintaxe
positionUTF8(haystack, needle[, start_pos])Argumentos
haystack— String na qual a busca é realizada.StringouEnumneedle— Substring a ser pesquisada.Stringstart_pos— Opcional. Posição (começando em 1) emhaystackna qual a busca se inicia.UInt*
Valor retornado
Retorna a posição inicial em bytes, contando a partir de 1, se a substring for encontrada; caso contrário, retorna 0. UInt64
Exemplos
Contagem de caracteres UTF-8
SELECT positionUTF8('Motörhead', 'r')┌─positionUTF8('Motörhead', 'r')─┐
│ 5 │
└────────────────────────────────┘