ClickHouse/docs/es/query_language/operators.md
Ivan 97f2a2213e
Move all folders inside /dbms one level up (#9974)
* Move some code outside dbms/src folder
* Fix paths
2020-04-02 02:51:21 +03:00

8.6 KiB
Raw Blame History

machine_translated
true

Operador

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

a[N] Acceso a un elemento de una matriz. El arrayElement(a, N) función.

a.N El acceso a un elemento de tupla. El tupleElement(a, N) función.

Operador de negación numérica

-a El negate (a) función.

Operadores de multiplicación y división

a * b El multiply (a, b) función.

a / b El divide(a, b) función.

a % b El modulo(a, b) función.

Operadores de suma y resta

a + b El plus(a, b) función.

a - b El minus(a, b) función.

Operadores de comparación

a = b El equals(a, b) función.

a == b El equals(a, b) función.

a != b El notEquals(a, b) función.

a <> b El notEquals(a, b) función.

a <= b El lessOrEquals(a, b) función.

a >= b El greaterOrEquals(a, b) función.

a < b El less(a, b) función.

a > b El greater(a, b) función.

a LIKE s El like(a, b) función.

a NOT LIKE s El notLike(a, b) función.

a BETWEEN b AND c Lo mismo que a >= b AND a <= c.

a NOT BETWEEN b AND c Lo mismo que a < b OR a > c.

Operadores para trabajar con conjuntos de datos

Ver IN operadores.

a IN ... El in(a, b) función.

a NOT IN ... El notIn(a, b) función.

a GLOBAL IN ... El globalIn(a, b) función.

a GLOBAL NOT IN ... El globalNotIn(a, b) función.

Operadores para trabajar con fechas y horas

EXTRAER

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:

  • DAY — El día del mes. Valores posibles: 1-31.
  • MONTH — El número de un mes. Valores posibles: 1-12.
  • YEAR — Año.
  • SECOND — Segundo. Valores posibles: 059.
  • MINUTE — Minuto. Valores posibles: 059.
  • HOUR — Hora. Valores posibles: 023.

El part El parámetro no distingue entre mayúsculas y minúsculas.

El date parámetro especifica la fecha o la hora a procesar. Bien Fecha o FechaHora tipo es compatible.

Ejemplos:

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.

CREATE TABLE test.Orders
(
    OrderId UInt64,
    OrderName String,
    OrderDate DateTime
)
ENGINE = Log;
INSERT INTO test.Orders VALUES (1, 'Jarlsberg Cheese', toDateTime('2008-10-11 13:23:44'));
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;
┌─OrderYear─┬─OrderMonth─┬─OrderDay─┬─OrderHour─┬─OrderMinute─┬─OrderSecond─┐
│      2008 │         10 │       11 │        13 │          23 │          44 │
└───────────┴────────────┴──────────┴───────────┴─────────────┴─────────────┘

Puedes ver más ejemplos en prueba.

INTERVALO

Crea un Intervalo-type valor que debe utilizarse en operaciones aritméticas con Fecha y FechaHora-tipo valores.

Tipos de intervalos:

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

!!! warning "Advertencia" Los intervalos con diferentes tipos no se pueden combinar. No puede 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.

Ejemplo:

SELECT now() AS current_date_time, current_date_time + INTERVAL 4 DAY + INTERVAL 3 HOUR
┌───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

Operador de Negación Lógica

NOT a El not(a) función.

Operador lógico and

a AND b Eland(a, b) función.

Operador lógico or

a OR b El or(a, b) función.

Operador condicional

a ? b : c El if(a, b, c) función.

Nota:

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() función, cada fila se replicará independientemente de la “a” condición.

Expresión condicional

CASE [x]
    WHEN a THEN b
    [WHEN ... THEN ...]
    [ELSE c]
END

Si x se especifica, entonces transform(x, [a, ...], [b, ...], c) se utiliza la función. De lo contrario multiIf(a, b, ..., c).

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

s1 || s2 El concat(s1, s2) function.

Operador de Creación Lambda

x -> expr El lambda(x, expr) function.

Los siguientes operadores no tienen prioridad, ya que son corchetes:

Operador de creación de matrices

[x1, ...] El array(x1, ...) function.

Operador de creación de tupla

(x1, x2, ...) El tuple(x2, x2, ...) function.

Asociatividad

Todos los operadores binarios han dejado asociatividad. Por ejemplo, 1 + 2 + 3 se transforma a plus(plus(1, 2), 3). A veces esto no funciona de la manera que usted espera. Por ejemplo, SELECT 4 > 2 > 3 resultará en 0.

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

ClickHouse soporta el IS NULL y IS NOT NULL operador.

ES NULO

  • Para NULO valores de tipo, el IS NULL operador devuelve:
    • 1 Español NULL.
    • 0 de lo contrario.
  • Para otros valores, el IS NULL operador siempre devuelve 0.
SELECT x+100 FROM t_null WHERE y IS NULL
┌─plus(x, 100)─┐
│          101 │
└──────────────┘

NO ES NULO

  • Para NULO valores de tipo, el IS NOT NULL operador devuelve:
    • 0 Español NULL.
    • 1 de lo contrario.
  • Para otros valores, el IS NOT NULL operador siempre devuelve 1.
SELECT * FROM t_null WHERE y IS NOT NULL
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘

Artículo Original