Estão disponíveis operadores matemáticos para vários tipos de dado do PostgreSQL. Para os tipos sem as convenções matemáticas habituais para todas as permutações possíveis (por exemplo, os tipos de data e hora), o comportamento real é descrito nas próximas seções.
A Tabela 6-2 mostra os operadores matemáticos disponíveis.
Tabela 6-2. Operadores matemáticos
Nome | Descrição | Exemplo | Resultado |
---|---|---|---|
+ | adição | 2 + 3 | 5 |
- | subtração | 2 - 3 | -1 |
* | multiplicação | 2 * 3 | 6 |
/ | divisão (divisão inteira trunca o resultado) | 4 / 2 | 2 |
% | módulo (resto) | 5 % 4 | 1 |
^ | exponenciação | 2.0 ^ 3.0 | 8 |
|/ | raiz quadrada | |/ 25.0 | 5 |
||/ | raiz cúbica | ||/ 27.0 | 3 |
! | fatorial | 5 ! | 120 |
!! | fatorial (operador de prefixo) | !! 5 | 120 |
@ | valor absoluto | @ -5.0 | 5 |
& | AND binário | 91 & 15 | 11 |
| | OR binário | 32 | 3 | 35 |
# | XOR binário | 17 # 5 | 20 |
~ | NOT binário | ~1 | -2 |
<< | deslocamento binário à esquerda | 1 << 4 | 16 |
>> | deslocamento binário à direita | 8 >> 2 | 2 |
Os operadores "binários" também estão disponíveis para os tipos cadeia de bits BIT e BIT VARYING, conforme mostrado na Tabela 6-3. Os argumentos de cadeia de bits para &, | e # devem ter o mesmo comprimento. Ao ser feito o deslocamento de bits, o comprimento original da cadeia de bits é preservado, conforme mostrado na tabela abaixo.
Tabela 6-3. Operadores binários para cadeias de bit
Exemplo | Resultado |
---|---|
B'10001' & B'01101' | 00001 |
B'10001' | B'01101' | 11101 |
B'10001' # B'01101' | 11110 |
~ B'10001' | 01110 |
B'10001' << 3 | 01000 |
B'10001' >> 2 | 00100 |
A Tabela 6-4 mostra as funções matemáticas disponíveis. Nesta tabela "dp" significa double precision. Muitas funções estão disponíveis de várias formas, possuindo argumentos com tipos de dado diferentes. Exceto onde for indicado, todas as formas das funções retornam o mesmo tipo de dado do argumento. As funções que trabalham com dados do tipo double precision são, em sua maioria, implementadas a partir da biblioteca C do sistema; a precisão e o comportamento em casos limites podem, portanto, variar dependendo do sistema hospedeiro.
Tabela 6-4. Funções matemáticas
Função | Tipo retornado | Descrição | Exemplo | Resultado |
---|---|---|---|---|
abs (x) | (o mesmo de x) | valor absoluto | abs(-17.4) | 17.4 |
cbrt (dp) | dp | raiz cúbica | cbrt(27.0) | 3 |
ceil (dp ou numeric) | (o mesmo da entrada) | o menor inteiro não menor que o argumento | ceil(-42.8) | -42 |
degrees (dp) | dp | radianos para graus | degrees(0.5) | 28.6478897565412 |
exp (dp ou numeric) | (o mesmo da entrada) | exponenciação | exp(1.0) | 2.71828182845905 |
floor (dp ou numeric) | (o mesmo da entrada) | o maior inteiro não maior que o argumento | floor(-42.8) | -43 |
ln (dp ou numeric) | (o mesmo da entrada) | logaritmo natural | ln(2.0) | 0.693147180559945 |
log (dp ou numeric) | (o mesmo da entrada) | logaritmo na base 10 | log(100.0) | 2 |
log (b numeric,
x numeric) | numeric | logaritmo na base b | log(2.0, 64.0) | 6.0000000000 |
mod (y,
x) | (o mesmo tipo dos argumentos) | resto de y/x | mod(9,4) | 1 |
pi () | dp | constante "Pi" | pi() | 3.14159265358979 |
pow (x dp,
e dp) | dp | eleva um número ao expoente e | pow(9.0, 3.0) | 729 |
pow (x numeric,
e numeric) | numeric | eleva um número ao expoente e | pow(9.0, 3.0) | 729 |
radians (dp) | dp | graus para radianos | radians(45.0) | 0.785398163397448 |
random () | dp | valor randômico entre 0.0 e 1.0 | random() | |
round (dp ou numeric) | (o mesmo da entrada) | arredonda para o inteiro mais próximo | round(42.4) | 42 |
round (v numeric, s integer) | numeric | arredonda com s casas decimais | round(42.4382, 2) | 42.44 |
sign (dp ou numeric) | (o mesmo da entrada) | sinal do argumento (-1, 0, +1) | sign(-8.4) | -1 |
sqrt (dp ou numeric) | (o mesmo da entrada) | raiz quadrada | sqrt(2.0) | 1.4142135623731 |
trunc (dp ou numeric) | (o mesmo da entrada) | trunca com zero casas decimais | trunc(42.8) | 42 |
trunc (v numeric, s integer) | numeric | trunca com s casas decimais | trunc(42.4382, 2) | 42.43 |
Finalizando, a Tabela 6-5 mostra as funções trigonométricas disponíveis. Todas as funções trigonométricas recebem argumentos e retornam valores do tipo double precision.