WHERE permite filtrar os dados que vêm da cláusulaFROM de SELECT.
Se houver uma cláusula WHERE, ela deve ser seguida de uma expressão do tipo UInt8.
As linhas para as quais essa expressão resulta em 0 são excluídas de transformações posteriores ou do resultado.
A expressão que segue a cláusula WHERE costuma ser usada com operadores de comparação e operadores lógicos, ou com uma das muitas funções regulares.
A expressão na cláusula WHERE é avaliada considerando a possibilidade de usar índices e poda de partições, se o engine de tabela subjacente oferecer suporte a isso.
PREWHERETambém há uma otimização de filtragem chamada
PREWHERE.
PREWHERE é uma otimização para aplicar a filtragem com mais eficiência.
Ela é habilitada por padrão mesmo que a cláusula PREWHERE não seja especificada explicitamente.Verificar NULL
Se você precisar testar se um valor é NULL, use:
IS NULLouisNullIS NOT NULLouisNotNull
NULL nunca será avaliada como verdadeira.
Filtrando dados com operadores lógicos
Você pode usar as seguintes funções lógicas em conjunto com a cláusulaWHERE para combinar várias condições:
Usando colunas UInt8 como condição
No ClickHouse, colunas UInt8 podem ser usadas diretamente como condições booleanas, em que 0 é false e qualquer valor diferente de zero (geralmente 1) é true.
Um exemplo disso é mostrado na seção abaixo.
Usando operadores de comparação
Os seguintes operadores de comparação podem ser usados:Correspondência de patterns e expressões condicionais
Além dos operadores de comparação, você pode usar correspondência de patterns e expressões condicionais na cláusulaWHERE.
Consulte “Correspondência de patterns e expressões condicionais” para ver exemplos de uso.
Expressão com literais, colunas ou subconsultas
A expressão após a cláusulaWHERE também pode incluir literais, colunas ou subconsultas, que são instruções SELECT aninhadas que retornam valores usados em condições.
Você pode combinar literais, colunas e subconsultas em condições complexas:
Exemplos
Verificando NULL
Consultas com valores NULL:
Filtrando dados com operadores lógicos
Considere a tabela e os dados a seguir:AND - ambas as condições devem ser atendidas:
OR - pelo menos uma condição deve ser atendida:
NOT - Nega uma condição:
XOR - Exatamente uma condição deve ser verdadeira (mas não ambas):
AND, OR, NOT, XOR) geralmente é mais legível, mas a sintaxe de função pode ser útil em expressões complexas ou ao criar consultas dinâmicas.
Usando colunas UInt8 como condição
Usando a tabela de um exemplo anterior, você pode usar o nome de uma coluna diretamente como condição:Usando operadores de comparação
Os exemplos abaixo usam a tabela e os dados do exemplo acima. Os resultados foram omitidos por brevidade. 1. Igualdade explícita com true (= 1 ou = true):
false (= 0 ou = false):
!= 0 ou != false):
IN:
No exemplo abaixo, (1, true) é uma tupla.
Correspondência de padrões e expressões condicionais
Os exemplos abaixo usam a tabela e os dados do exemplo acima. Os resultados foram omitidos por brevidade.Exemplos de LIKE
Exemplos de ILIKE
Exemplos de SIMILAR TO
Diferentemente deLIKE, um pattern de SIMILAR TO também aceita os metacaracteres de expressão regular |, *, +, ?, {, }, (, ), [ e ] e, assim como no LIKE, deve corresponder ao valor inteiro:
ESCAPE, que também funciona com LIKE, ILIKE, NOT LIKE, NOT ILIKE e NOT SIMILAR TO:
SIMILAR TO para ver a gramática completa do pattern.