* Replace underscores with hyphens * remove temporary code * fix style check * fix collapse
8.9 KiB
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: 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.
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
- Intervalo tipo de datos
- ToInterval funciones de conversión de tipo
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 esNULL
.0
de lo contrario.
- Para otros valores, el
IS NULL
operador siempre devuelve0
.
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 esNULL
.1
de lo contrario.
- Para otros valores, el
IS NOT NULL
operador siempre devuelve1
.
SELECT * FROM t_null WHERE y IS NOT NULL
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘