Operadores de acceso
a[N] – Acceso a un elemento de un array. La función arrayElement(a, N).
a.N – Acceso a un elemento de una tupla. La función tupleElement(a, N).
Operador de negación numérica
-a – la función negate (a).
Para la negación de tupla: tupleNegate.
Operadores de multiplicación y división
a * b – La función multiply (a, b).
Para multiplicar una tupla por un número: tupleMultiplyByNumber; para el producto escalar: dotProduct.
a / b – La función divide(a, b).
Para dividir una tupla por un número: tupleDivideByNumber.
a % b – La función modulo(a, b).
Operadores de suma y resta
a + b – La función plus(a, b).
Para la suma de tuplas: tuplePlus.
a - b – La función minus(a, b).
Para la resta de tuplas: tupleMinus.
Operadores de comparación
función equals
a = b – La función equals(a, b).
a == b – La función equals(a, b).
función notEquals
a != b: la función notEquals(a, b).
a <> b: la función notEquals(a, b).
función lessOrEquals
a <= b: la función lessOrEquals(a, b).
función greaterOrEquals
a >= b – La función greaterOrEquals(a, b).
función less
a < b – La función less(a, b).
función greater
a > b – La función greater(a, b).
función like
a LIKE b – La función like(a, b).
función notLike
a NOT LIKE b – La función notLike(a, b).
función ilike
a ILIKE b – La función ilike(a, b).
Función BETWEEN
a BETWEEN b AND c – Equivale a a >= b AND a <= c.
a NOT BETWEEN b AND c – Equivale a a < b OR a > c.
operador is not distinct from (<=>)
A partir de la versión 25.10, puedes usar
<=> igual que cualquier otro operador.
Antes de la versión 25.10, solo se podía usar en expresiones JOIN, por ejemplo:<=> es el operador de igualdad seguro para NULL, equivalente a IS NOT DISTINCT FROM.
Funciona como el operador de igualdad normal (=), pero trata los valores NULL como comparables.
Dos valores NULL se consideran iguales, y un NULL comparado con cualquier valor distinto de NULL devuelve 0 (falso) en lugar de NULL.
Operadores para trabajar con cadenas
OVERLAY
OVERLAY(string PLACING replacement FROM offset)- La funciónoverlay(string, replacement, offset).OVERLAY(string PLACING replacement FROM offset FOR length)- La funciónoverlay(string, replacement, offset, length).OVERLAYUTF8(string PLACING replacement FROM offset)- La funciónoverlayUTF8(string, replacement, offset).OVERLAYUTF8(string PLACING replacement FROM offset FOR length)- La funciónoverlayUTF8(string, replacement, offset, length).
Operadores para trabajar con conjuntos de datos
función in
a IN ... – La función in(a, b).
función notIn
a NOT IN ... – La función notIn(a, b).
función globalIn
a GLOBAL IN ... – La función globalIn(a, b).
función globalNotIn
a GLOBAL NOT IN ... – La función globalNotIn(a, b).
función in subconsulta
a = ANY (subquery) – La función in(a, subquery).
notIn subconsulta function
a != ANY (subquery) – Igual que a NOT IN (SELECT singleValueOrNull(*) FROM subquery).
función in subconsulta
a = ALL (subquery) – Lo mismo que a IN (SELECT singleValueOrNull(*) FROM subquery).
función notIn en subconsulta
a != ALL (subquery) – La función notIn(a, subquery).
Ejemplos
Consulta con ALL:
Query
Response
Query
Response
Operadores para trabajar con fechas y horas
EXTRACT
part especifica qué componente de la fecha se debe obtener. Se admiten los siguientes valores:
SECOND— El segundo. Posibles valores: 0–59.MINUTE— El minuto. Posibles valores: 0–59.HOUR— La hora. Posibles valores: 0–23.DAY— El día del mes. Posibles valores: 1–31.WEEK— El número de semana ISO 8601. Posibles valores: 1–53.MONTH— El número del mes. Posibles valores: 1–12.QUARTER— El trimestre. Posibles valores: 1–4.YEAR— El año.EPOCH— La marca de tiempo Unix (segundos desde 1970-01-01 00:00:00 UTC). Nota: paraDateTime64, la parte de subsegundos se trunca.DOW— El día de la semana (compatible con PostgreSQL). 0 = domingo, 6 = sábado.DOY— El día del año. Posibles valores: 1–366.ISODOW— El día de la semana según ISO. 1 = lunes, 7 = domingo.ISOYEAR— El año de numeración de semanas ISO 8601.CENTURY— El siglo. Por ejemplo, el año 2024 está en el siglo XXI.DECADE— La década (año dividido entre 10). Por ejemplo, el año 2024 corresponde a la década 202.MILLENNIUM— El milenio. Por ejemplo, el año 2024 está en el 3.er milenio.
part no distingue entre mayúsculas y minúsculas.
El parámetro date especifica la fecha o la hora que se debe procesar. Se admiten los tipos Date, Date32, DateTime y DateTime64.
Ejemplos:
DateTime.
INTERVAL
SECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
INTERVAL. Por ejemplo, INTERVAL 1 HOUR es idéntico a INTERVAL '1 hour' o INTERVAL '1' hour.
Ejemplos:
Siempre se prefieren la sintaxis
INTERVAL o la función addDays. La suma o resta simple (con sintaxis como now() + ...) no tiene en cuenta la configuración horaria. Por ejemplo, el horario de verano.- tipo de dato Interval
- funciones de conversión de tipos toInterval
Suma de fecha y hora
+. El resultado es un DateTime o DateTime64 que representa la fecha a la hora del día especificada. La operación es conmutativa.
El tipo de resultado depende de los tipos de los operandos:
| Operando izquierdo | Operando derecho | Tipo de resultado |
|---|---|---|
Date | Time | DateTime |
Date | Time64(s) | DateTime64(s) |
Date32 | Time | DateTime64(0) |
Date32 | Time64(s) | DateTime64(s) |
El resultado utiliza la zona horaria de la sesión (o la zona horaria predeterminada del servidor si no se ha configurado ninguna para la sesión). La configuración
date_time_overflow_behavior controla qué sucede cuando el resultado queda fuera del rango representable.Operador lógico AND
SELECT a AND b — calcula la conjunción lógica entre a y b con la función and.
Operador lógico OR
SELECT a OR b — calcula la disyunción lógica entre a y b mediante la función or.
Operador de negación lógica
SELECT NOT a — calcula la negación lógica de a mediante la función not.
Operador condicional
a ? b : c – La función if(a, b, c).
Nota:
El operador condicional calcula los valores de b y c, luego comprueba si se cumple la condición a y después devuelve el valor correspondiente. Si b o C es una función arrayJoin(), cada fila se replicará independientemente de la condición «a».
Expresión condicional
x, se usa la función transform(x, [a, ...], [b, ...], c). De lo contrario, se usa multiIf(a, b, ..., c).
Si no hay una cláusula ELSE c en la expresión, el valor predeterminado es NULL.
La función transform no funciona con NULL.
Operador de concatenación
s1 || s2 – La función concat(s1, s2).
Operador de creación de lambda
x -> expr – La función lambda(x, expr).
Los siguientes operadores no tienen prioridad, ya que son corchetes:
Operador de creación de Array
[x1, ...] – La función array(x1, ...).
Operador de creación de tupla
(x1, x2, ...) – La función tuple(x2, x2, ...).
Asociatividad
1 + 2 + 3 se transforma en plus(plus(1, 2), 3).
A veces esto no funciona como cabría esperar. Por ejemplo, SELECT 4 > 2 > 3 dará como resultado 0.
Por motivos de eficiencia, las funciones and y or aceptan cualquier número de argumentos. Las cadenas correspondientes de operadores AND y OR se transforman en una única llamada a estas funciones.
Comprobación de NULL
IS NULL y IS NOT NULL.
IS NULL
- Para los valores de tipo Nullable, el operador
IS NULLdevuelve:1si el valor esNULL.0en caso contrario.
- Para cualquier otro valor, el operador
IS NULLsiempre devuelve0.
optimize_functions_to_subcolumns = 1, la función lee solo la subcolumna null en lugar de leer y procesar todos los datos de la columna. La consulta SELECT n IS NULL FROM table se transforma en SELECT n.null FROM TABLE.
IS NOT NULL
- Para los valores de tipo Nullable, el operador
IS NOT NULLdevuelve:0si el valor esNULL.1en caso contrario.
- Para otros valores, el operador
IS NOT NULLsiempre devuelve1.
optimize_functions_to_subcolumns = 1, la función lee solo la subcolumna null en lugar de leer y procesar los datos de toda la columna. La consulta SELECT n IS NOT NULL FROM table se convierte en SELECT NOT n.null FROM TABLE.