ClickHouse/docs/es/sql_reference/operators.md
2020-04-04 12:15:31 +03:00

8.9 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 3e185d24c9 37 Operador

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] Access to an element of an array. The arrayElement(a, N) función.

a.N Access to a tuple element. The tupleElement(a, N) función.

Operador de negación numérica

-a The negate (a) función.

Operadores de multiplicación y división

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

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

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

Operadores de suma y resta

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

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

Operadores de comparación

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

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

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

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

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

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

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

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

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

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

a BETWEEN b AND c The same as a >= b AND a <= c.

a NOT BETWEEN b AND c The same as a < b OR a > c.

Operadores para trabajar con conjuntos de datos

Ver IN operadores.

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

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

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

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

Operadores para trabajar con fechas y horarios

EXTRACT

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 — The day of the month. Possible values: 131.
  • MONTH — The number of a month. Possible values: 112.
  • YEAR — The year.
  • SECOND — The second. Possible values: 059.
  • MINUTE — The minute. Possible values: 059.
  • HOUR — The hour. Possible values: 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.

INTERVAL

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

Tipos de intervalos:

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

!!! warning "Advertencia" 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.

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 The not(a) función.

Operador lógico and

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

Operador lógico or

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

Operador condicional

a ? b : c The 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) function is used. Otherwise 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 The concat(s1, s2) function.

Operador de Creación Lambda

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

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

Operador de creación de matrices

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

Operador de creación de tupla

(x1, x2, ...) The 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 esperas. 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 a los operadores.

IS NULL

  • Para NULL valores de tipo, el IS NULL operador devuelve:
    • 1 si el valor es 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 │
└──────────────┘

IS NOT NULL

  • Para NULL valores de tipo, el IS NOT NULL operador devuelve:
    • 0 si el valor es 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