WHERE le permite filtrar los datos que provienen de la cláusula FROM de SELECT.
Si hay una cláusula WHERE, debe ir seguida de una expresión de tipo UInt8.
Las filas en las que esta expresión se evalúa como 0 se excluyen de transformaciones posteriores o del resultado.
La expresión que sigue a la cláusula WHERE suele usarse con operadores de comparación y operadores lógicos, o con una de las muchas funciones regulares.
Al evaluar la expresión WHERE, se tiene en cuenta si pueden utilizarse índices y la poda de particiones, siempre que el motor de tabla subyacente lo admita.
PREWHERETambién existe una optimización de filtrado llamada
PREWHERE.
Prewhere es una optimización que permite aplicar el filtrado de forma más eficiente.
Está habilitada de forma predeterminada incluso si la cláusula PREWHERE no se especifica explícitamente.Comprobación de NULL
Si necesita comprobar si un valor es NULL, use:
De lo contrario, una expresión con NULL nunca se cumplirá.
Filtrar datos con operadores lógicos
Puede usar las siguientes funciones lógicas junto con la cláusulaWHERE para combinar varias condiciones:
Uso de columnas UInt8 como condición
En ClickHouse, las columnas UInt8 pueden usarse directamente como condiciones booleanas, donde 0 es false y cualquier valor distinto de cero (normalmente 1) es true.
Un ejemplo de esto se muestra en la sección siguiente.
Uso de los operadores de comparación
Se pueden usar los siguientes operadores de comparación:Coincidencia de patrones y expresiones condicionales
Además de los operadores de comparación, puede usar la coincidencia de patrones y las expresiones condicionales en la cláusulaWHERE.
Consulte “Coincidencia de patrones y expresiones condicionales” para ver ejemplos de uso.
Expresión con literales, columnas o subconsultas
La expresión que sigue a la cláusulaWHERE también puede incluir literales, columnas o subconsultas, que son sentencias SELECT anidadas que devuelven valores usados en las condiciones.
Puede combinar literales, columnas y subconsultas en condiciones complejas:
Ejemplos
Comprobación de NULL
Consultas con valores NULL:
Filtrado de datos con operadores lógicos
Dada la siguiente tabla y estos datos:AND - se deben cumplir ambas condiciones:
OR - al menos una condición debe cumplirse:
NOT - Niega una condición:
XOR - Exactamente una condición debe cumplirse (no ambas):
AND, OR, NOT, XOR) suele ser más legible, pero la sintaxis funcional puede resultar útil en expresiones complejas o al crear consultas dinámicas.
Uso de columnas UInt8 como condición
Tomando la tabla de un ejemplo anterior, puedes usar directamente el nombre de una columna como condición:Uso de operadores de comparación
Los siguientes ejemplos utilizan la tabla y los datos del ejemplo anterior. Se omiten los resultados por motivos de brevedad. 1. Igualdad explícita con true (= 1 o = true):
false (= 0 o = false):
!= 0 o != false):
IN:
En el siguiente ejemplo, (1, true) es una tupla.
Coincidencia de patrones y expresiones condicionales
Los ejemplos siguientes usan la tabla y los datos del ejemplo anterior. Se omiten los resultados por brevedad.Ejemplos de LIKE
Ejemplos de ILIKE
Ejemplos de SIMILAR TO
A diferencia deLIKE, un patrón de SIMILAR TO también admite los metacaracteres de las expresiones regulares |, *, +, ?, {, }, (, ), [ y ] y, al igual que LIKE, debe coincidir con el valor completo:
ESCAPE, que también funciona con LIKE, ILIKE, NOT LIKE, NOT ILIKE y NOT SIMILAR TO:
SIMILAR TO para conocer la gramática completa de los patrones.