2020-03-30 08:25:29 +00:00
---
machine_translated: true
2020-04-04 09:15:31 +00:00
machine_translated_rev: 3e185d24c9fe772c7cf03d5475247fb829a21dfa
toc_priority: 37
toc_title: Operador
2020-03-30 08:25:29 +00:00
---
2020-03-21 04:11:51 +00:00
# Operador {#operators}
Todos los operadores se transforman a sus funciones correspondientes en la etapa de análisis de consulta de acuerdo con su precedencia y asociatividad.
Los grupos de operadores se enumeran en orden de prioridad (cuanto más alto esté en la lista, más temprano estará conectado el operador a sus argumentos).
## Operadores de acceso {#access-operators}
2020-04-04 09:15:31 +00:00
`a[N]` – Access to an element of an array. The `arrayElement(a, N)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a.N` – Access to a tuple element. The `tupleElement(a, N)` función.
2020-03-21 04:11:51 +00:00
## Operador de negación numérica {#numeric-negation-operator}
2020-04-04 09:15:31 +00:00
`-a` – The `negate (a)` función.
2020-03-21 04:11:51 +00:00
## Operadores de multiplicación y división {#multiplication-and-division-operators}
2020-04-04 09:15:31 +00:00
`a * b` – The `multiply (a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a / b` – The `divide(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a % b` – The `modulo(a, b)` función.
2020-03-21 04:11:51 +00:00
## Operadores de suma y resta {#addition-and-subtraction-operators}
2020-04-04 09:15:31 +00:00
`a + b` – The `plus(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a - b` – The `minus(a, b)` función.
2020-03-21 04:11:51 +00:00
## Operadores de comparación {#comparison-operators}
2020-04-04 09:15:31 +00:00
`a = b` – The `equals(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a == b` – The `equals(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a != b` – The `notEquals(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a <> b` – The `notEquals(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a <= b` – The `lessOrEquals(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a >= b` – The `greaterOrEquals(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a < b` – The `less(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a > b` – The `greater(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a LIKE s` – The `like(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a NOT LIKE s` – The `notLike(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a BETWEEN b AND c` – The same as `a >= b AND a <= c` .
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a NOT BETWEEN b AND c` – The same as `a < b OR a > c` .
2020-03-21 04:11:51 +00:00
## Operadores para trabajar con conjuntos de datos {#operators-for-working-with-data-sets}
2020-04-04 09:15:31 +00:00
*Ver [IN operadores ](statements/select.md#select-in-operators ).*
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a IN ...` – The `in(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a NOT IN ...` – The `notIn(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a GLOBAL IN ...` – The `globalIn(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
`a GLOBAL NOT IN ...` – The `globalNotIn(a, b)` función.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
## Operadores para trabajar con fechas y horarios {#operators-datetime}
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
### EXTRACT {#operator-extract}
2020-03-21 04:11:51 +00:00
``` sql
EXTRACT(part FROM date);
```
Extrae una parte de una fecha determinada. Por ejemplo, puede recuperar un mes a partir de una fecha determinada o un segundo a partir de una hora.
El `part` parámetro especifica qué parte de la fecha se va a recuperar. Los siguientes valores están disponibles:
2020-04-04 09:15:31 +00:00
- `DAY` — The day of the month. Possible values: 1– 31.
- `MONTH` — The number of a month. Possible values: 1– 12.
- `YEAR` — The year.
- `SECOND` — The second. Possible values: 0– 59.
- `MINUTE` — The minute. Possible values: 0– 59.
- `HOUR` — The hour. Possible values: 0– 23.
2020-03-21 04:11:51 +00:00
El `part` El parámetro no distingue entre mayúsculas y minúsculas.
2020-04-04 09:15:31 +00:00
El `date` parámetro especifica la fecha o la hora a procesar. Bien [Fecha ](../sql_reference/data_types/date.md ) o [FechaHora ](../sql_reference/data_types/datetime.md ) tipo es compatible.
2020-03-21 04:11:51 +00:00
Ejemplos:
``` sql
SELECT EXTRACT(DAY FROM toDate('2017-06-15'));
SELECT EXTRACT(MONTH FROM toDate('2017-06-15'));
SELECT EXTRACT(YEAR FROM toDate('2017-06-15'));
```
En el siguiente ejemplo creamos una tabla e insertamos en ella un valor con el `DateTime` tipo.
``` sql
CREATE TABLE test.Orders
(
OrderId UInt64,
OrderName String,
OrderDate DateTime
)
ENGINE = Log;
```
``` sql
INSERT INTO test.Orders VALUES (1, 'Jarlsberg Cheese', toDateTime('2008-10-11 13:23:44'));
```
``` sql
SELECT
toYear(OrderDate) AS OrderYear,
toMonth(OrderDate) AS OrderMonth,
toDayOfMonth(OrderDate) AS OrderDay,
toHour(OrderDate) AS OrderHour,
toMinute(OrderDate) AS OrderMinute,
toSecond(OrderDate) AS OrderSecond
FROM test.Orders;
```
``` text
┌─OrderYear─┬─OrderMonth─┬─OrderDay─┬─OrderHour─┬─OrderMinute─┬─OrderSecond─┐
│ 2008 │ 10 │ 11 │ 13 │ 23 │ 44 │
└───────────┴────────────┴──────────┴───────────┴─────────────┴─────────────┘
```
2020-04-01 23:51:21 +00:00
Puedes ver más ejemplos en [prueba ](https://github.com/ClickHouse/ClickHouse/blob/master/tests/queries/0_stateless/00619_extract.sql ).
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
### INTERVAL {#operator-interval}
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
Crea un [Intervalo ](../sql_reference/data_types/special_data_types/interval.md )-type valor que debe utilizarse en operaciones aritméticas con [Fecha ](../sql_reference/data_types/date.md ) y [FechaHora ](../sql_reference/data_types/datetime.md )-type valores.
2020-03-21 04:11:51 +00:00
Tipos de intervalos:
- `SECOND`
- `MINUTE`
- `HOUR`
- `DAY`
- `WEEK`
- `MONTH`
- `QUARTER`
- `YEAR`
!!! warning "Advertencia"
2020-04-04 09:15:31 +00:00
Los intervalos con diferentes tipos no se pueden combinar. No puedes usar expresiones como `INTERVAL 4 DAY 1 HOUR` . Exprese los intervalos en unidades que son más pequeñas o iguales a la unidad más pequeña del intervalo, por ejemplo `INTERVAL 25 HOUR` . Puede usar operaciones consequtive como en el siguiente ejemplo.
2020-03-21 04:11:51 +00:00
Ejemplo:
``` sql
SELECT now() AS current_date_time, current_date_time + INTERVAL 4 DAY + INTERVAL 3 HOUR
```
``` text
┌───current_date_time─┬─plus(plus(now(), toIntervalDay(4)), toIntervalHour(3))─┐
│ 2019-10-23 11:16:28 │ 2019-10-27 14:16:28 │
└─────────────────────┴────────────────────────────────────────────────────────┘
```
**Ver también**
2020-04-04 09:15:31 +00:00
- [Intervalo ](../sql_reference/data_types/special_data_types/interval.md ) tipo de datos
- [ToInterval ](../sql_reference/functions/type_conversion_functions.md#function-tointerval ) funciones de conversión de tipo
2020-03-21 04:11:51 +00:00
## Operador de Negación Lógica {#logical-negation-operator}
2020-04-04 09:15:31 +00:00
`NOT a` – The `not(a)` función.
2020-03-21 04:11:51 +00:00
## Operador lógico and {#logical-and-operator}
2020-04-04 09:15:31 +00:00
`a AND b` – The`and(a, b)` función.
2020-03-21 04:11:51 +00:00
## Operador lógico or {#logical-or-operator}
2020-04-04 09:15:31 +00:00
`a OR b` – The `or(a, b)` función.
2020-03-21 04:11:51 +00:00
## Operador condicional {#conditional-operator}
2020-04-04 09:15:31 +00:00
`a ? b : c` – The `if(a, b, c)` función.
2020-03-21 04:11:51 +00:00
Nota:
2020-04-04 09:15:31 +00:00
El operador condicional calcula los valores de b y c, luego verifica si se cumple la condición a y luego devuelve el valor correspondiente. Si `b` o `C` es una [arrayJoin() ](../sql_reference/functions/array_join.md#functions_arrayjoin ) función, cada fila se replicará independientemente de la “a” condición.
2020-03-21 04:11:51 +00:00
2020-03-22 09:14:59 +00:00
## Expresión condicional {#operator_case}
2020-03-21 04:11:51 +00:00
``` sql
CASE [x]
WHEN a THEN b
[WHEN ... THEN ...]
[ELSE c]
END
```
2020-04-04 09:15:31 +00:00
Si `x` se especifica, entonces `transform(x, [a, ...], [b, ...], c)` function is used. Otherwise – `multiIf(a, b, ..., c)` .
2020-03-21 04:11:51 +00:00
Si no hay `ELSE c` cláusula en la expresión, el valor predeterminado es `NULL` .
El `transform` no funciona con `NULL` .
## Operador de Concatenación {#concatenation-operator}
2020-04-04 09:15:31 +00:00
`s1 || s2` – The `concat(s1, s2) function.`
2020-03-21 04:11:51 +00:00
## Operador de Creación Lambda {#lambda-creation-operator}
2020-04-04 09:15:31 +00:00
`x -> expr` – The `lambda(x, expr) function.`
2020-03-21 04:11:51 +00:00
Los siguientes operadores no tienen prioridad, ya que son corchetes:
## Operador de creación de matrices {#array-creation-operator}
2020-04-04 09:15:31 +00:00
`[x1, ...]` – The `array(x1, ...) function.`
2020-03-21 04:11:51 +00:00
## Operador de creación de tupla {#tuple-creation-operator}
2020-04-04 09:15:31 +00:00
`(x1, x2, ...)` – The `tuple(x2, x2, ...) function.`
2020-03-21 04:11:51 +00:00
## Asociatividad {#associativity}
Todos los operadores binarios han dejado asociatividad. Por ejemplo, `1 + 2 + 3` se transforma a `plus(plus(1, 2), 3)` .
2020-04-04 09:15:31 +00:00
A veces esto no funciona de la manera que esperas. Por ejemplo, `SELECT 4 > 2 > 3` resultará en 0.
2020-03-21 04:11:51 +00:00
Para la eficiencia, el `and` y `or` funciones aceptan cualquier número de argumentos. Las cadenas correspondientes de `AND` y `OR` operadores se transforman en una sola llamada de estas funciones.
## Comprobación de `NULL` {#checking-for-null}
2020-04-04 09:15:31 +00:00
ClickHouse soporta el `IS NULL` y `IS NOT NULL` a los operadores.
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
### IS NULL {#operator-is-null}
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
- Para [NULL ](../sql_reference/data_types/nullable.md ) valores de tipo, el `IS NULL` operador devuelve:
- `1` si el valor es `NULL` .
2020-03-21 04:11:51 +00:00
- `0` de lo contrario.
- Para otros valores, el `IS NULL` operador siempre devuelve `0` .
<!-- -->
``` sql
SELECT x+100 FROM t_null WHERE y IS NULL
```
``` text
┌─plus(x, 100)─┐
│ 101 │
└──────────────┘
```
2020-04-04 09:15:31 +00:00
### IS NOT NULL {#is-not-null}
2020-03-21 04:11:51 +00:00
2020-04-04 09:15:31 +00:00
- Para [NULL ](../sql_reference/data_types/nullable.md ) valores de tipo, el `IS NOT NULL` operador devuelve:
- `0` si el valor es `NULL` .
2020-03-21 04:11:51 +00:00
- `1` de lo contrario.
- Para otros valores, el `IS NOT NULL` operador siempre devuelve `1` .
<!-- -->
``` sql
SELECT * FROM t_null WHERE y IS NOT NULL
```
``` text
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘
```
2020-04-04 09:15:31 +00:00
[Artículo Original ](https://clickhouse.tech/docs/en/query_language/operators/ ) <!--hide-->