Operadores de acesso
a[N] – Acesso a um elemento de um Array. A função arrayElement(a, N).
a.N – Acesso a um elemento de uma tupla. A função tupleElement(a, N).
Operador de negação numérica
-a – A função negate(a).
Para a negação de tuplas: tupleNegate.
Operadores de Multiplicação e Divisão
a * b – A função multiply(a, b).
Para multiplicar tupla por um número: tupleMultiplyByNumber; para produto escalar: dotProduct.
a / b – A função divide(a, b).
Para dividir tupla por um número: tupleDivideByNumber.
a % b – A função modulo(a, b).
Operadores de adição e subtração
a + b – A função plus(a, b).
Para adição de tuplas: tuplePlus.
a - b – A função minus(a, b).
Para subtração de tuplas: tupleMinus.
Operadores de comparação
função equals
a = b – A função equals(a, b).
a == b – A função equals(a, b).
função notEquals
a != b – A função notEquals(a, b).
a <> b – A função notEquals(a, b).
função lessOrEquals
a <= b – a função lessOrEquals(a, b).
função greaterOrEquals
a >= b – A função greaterOrEquals(a, b).
função less
a < b – A função less(a, b).
função greater
a > b – A função greater(a, b).
função like
a LIKE b – a função like(a, b).
Função notLike
a NOT LIKE b – a função notLike(a, b).
função ilike
a ILIKE b – a função ilike(a, b).
Função 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 da versão 25.10, você pode usar
<=> da mesma forma que qualquer outro operador.
Antes da versão 25.10, ele só podia ser usado em expressões JOIN, por exemplo:<=> é o operador de igualdade compatível com NULL, equivalente a IS NOT DISTINCT FROM.
Ele funciona como o operador de igualdade comum (=), mas trata valores NULL como comparáveis.
Dois valores NULL são considerados iguais, e um NULL comparado com qualquer valor não NULL retorna 0 (falso), em vez de NULL.
Operadores para trabalhar com strings
OVERLAY
OVERLAY(string PLACING replacement FROM offset)- A funçãooverlay(string, replacement, offset).OVERLAY(string PLACING replacement FROM offset FOR length)- A funçãooverlay(string, replacement, offset, length).OVERLAYUTF8(string PLACING replacement FROM offset)- A funçãooverlayUTF8(string, replacement, offset).OVERLAYUTF8(string PLACING replacement FROM offset FOR length)- A funçãooverlayUTF8(string, replacement, offset, length).
Operadores para trabalhar com conjuntos de dados
função in
a IN ... – a função in(a, b).
função notIn
a NOT IN ... – a função notIn(a, b).
função globalIn
a GLOBAL IN ... – a função globalIn(a, b).
função globalNotIn
a GLOBAL NOT IN ... – A função globalNotIn(a, b).
função in de subconsulta
a = ANY (subquery) – A função in(a, subquery).
notIn subconsulta function
a != ANY (subquery) – O mesmo que a NOT IN (SELECT singleValueOrNull(*) FROM subquery).
função in subconsulta
a = ALL (subquery) – O mesmo que a IN (SELECT singleValueOrNull(*) FROM subquery).
função de subconsulta notIn
a != ALL (subquery) – A função notIn(a, subquery).
Exemplos
Consulta com ALL:
Query
Response
Query
Response
Operadores para trabalhar com datas e horas
EXTRACT
part especifica qual parte da data deve ser recuperada. Os seguintes valores estão disponíveis:
SECOND— O segundo. Valores possíveis: 0–59.MINUTE— O minuto. Valores possíveis: 0–59.HOUR— A hora. Valores possíveis: 0–23.DAY— O dia do mês. Valores possíveis: 1–31.WEEK— O número da semana ISO 8601. Valores possíveis: 1–53.MONTH— O número do mês. Valores possíveis: 1–12.QUARTER— O trimestre. Valores possíveis: 1–4.YEAR— O ano.EPOCH— O Unix timestamp (segundos desde 1970-01-01 00:00:00 UTC). Observação: paraDateTime64, a parte fracionária dos segundos é truncada.DOW— O dia da semana (compatível com PostgreSQL). 0 = domingo, 6 = sábado.DOY— O dia do ano. Valores possíveis: 1–366.ISODOW— O dia ISO da semana. 1 = segunda-feira, 7 = domingo.ISOYEAR— O ano de numeração de semanas ISO 8601.CENTURY— O século. Por exemplo, o ano de 2024 está no século 21.DECADE— A década (ano dividido por 10). Por exemplo, o ano de 2024 tem década 202.MILLENNIUM— O milênio. Por exemplo, o ano de 2024 está no 3º milênio.
part não diferencia maiúsculas de minúsculas.
O parâmetro date especifica a data ou o horário a ser processado. Os tipos Date, Date32, DateTime, e DateTime64 são suportados.
Exemplos:
DateTime.
INTERVAL
SECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
INTERVAL. Por exemplo, INTERVAL 1 HOUR é idêntico a INTERVAL '1 hour' ou INTERVAL '1' hour.
Exemplos:
A sintaxe
INTERVAL ou a função addDays devem ser sempre preferidas. A simples adição ou subtração (com sintaxe como now() + ...) não leva em conta as configurações de horário. Por exemplo, o horário de verão.- tipo de dado Interval
- toInterval funções de conversão de tipo
Adição de data e hora
+. O resultado é um DateTime ou DateTime64 que representa a data no horário informado. A operação é comutativa.
O tipo do resultado depende dos tipos dos operandos:
| Operando esquerdo | Operando direito | Tipo do resultado |
|---|---|---|
Date | Time | DateTime |
Date | Time64(s) | DateTime64(s) |
Date32 | Time | DateTime64(0) |
Date32 | Time64(s) | DateTime64(s) |
O resultado usa o fuso horário da sessão (ou o fuso horário padrão do servidor, se nenhum fuso horário da sessão estiver definido). A configuração
date_time_overflow_behavior controla o que acontece quando o resultado fica fora do intervalo representável.Operador lógico AND
SELECT a AND b — calcula a conjunção lógica entre a e b usando a função and.
Operador lógico OR
SELECT a OR b — calcula a disjunção lógica entre a e b usando a função or.
Operador de negação lógica
SELECT NOT a — calcula a negação lógica de a usando a função not.
Operador condicional
a ? b : c – A função if(a, b, c).
Observação:
O operador condicional calcula os valores de b e c, verifica se a condição a é satisfeita e, em seguida, retorna o valor correspondente. Se b ou C for a função arrayJoin(), cada linha será replicada independentemente da condição “a”.
Expressão condicional
x for especificado, será usada a função transform(x, [a, ...], [b, ...], c). Caso contrário, multiIf(a, b, ..., c).
Se não houver a cláusula ELSE c na expressão, o valor padrão será NULL.
A função transform não funciona com NULL.
Operador de concatenação
s1 || s2 – A função concat(s1, s2) function.
Operador de criação de lambda
x -> expr – a função lambda(x, expr).
Os operadores a seguir não têm prioridade, pois são parênteses:
Operador de criação de Array
[x1, ...] – A função array(x1, ...).
Operador de criação de tupla
(x1, x2, ...) – A função tuple(x2, x2, ...).
Associatividade
1 + 2 + 3 é transformado em plus(plus(1, 2), 3).
Às vezes, isso não funciona como você espera. Por exemplo, SELECT 4 > 2 > 3 resultará em 0.
Para maior eficiência, as funções and e or aceitam qualquer número de argumentos. As cadeias correspondentes de operadores AND e OR são transformadas em uma única chamada dessas funções.
Verificando NULL
IS NULL e IS NOT NULL.
IS NULL
- Para valores do tipo Nullable, o operador
IS NULLretorna:1, se o valor forNULL.0, caso contrário.
- Para outros valores, o operador
IS NULLsempre retorna0.
optimize_functions_to_subcolumns = 1, a função lê apenas a subcoluna null, em vez de ler e processar todos os dados da coluna. A consulta SELECT n IS NULL FROM table é transformada em SELECT n.null FROM TABLE.
IS NOT NULL
- Para valores do tipo Nullable, o operador
IS NOT NULLretorna:0, se o valor forNULL.1, caso contrário.
- Para outros valores, o operador
IS NOT NULLsempre retorna1.
optimize_functions_to_subcolumns = 1, a função lê apenas a subcoluna null, em vez de ler e processar todos os dados da coluna. A consulta SELECT n IS NOT NULL FROM table é transformada em SELECT NOT n.null FROM TABLE.