6.3. Funções e operadores matemáticos

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

NomeDescriçãoExemploResultado
+ adição2 + 35
- subtração2 - 3-1
* multiplicação2 * 36
/ divisão (divisão inteira trunca o resultado)4 / 22
% módulo (resto)5 % 41
^ exponenciação2.0 ^ 3.08
|/ raiz quadrada|/ 25.05
||/ raiz cúbica||/ 27.03
! fatorial5 !120
!! fatorial (operador de prefixo)!! 5120
@ valor absoluto@ -5.05
& AND binário91 & 1511
| OR binário32 | 335
# XOR binário17 # 520
~ NOT binário~1-2
<< deslocamento binário à esquerda1 << 416
>> deslocamento binário à direita8 >> 22

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

ExemploResultado
B'10001' & B'01101'00001
B'10001' | B'01101'11101
B'10001' # B'01101'11110
~ B'10001'01110
B'10001' << 301000
B'10001' >> 200100

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çãoTipo retornadoDescriçãoExemploResultado
abs(x)(o mesmo de x)valor absolutoabs(-17.4)17.4
cbrt(dp)dpraiz cúbicacbrt(27.0)3
ceil(dp ou numeric)(o mesmo da entrada)o menor inteiro não menor que o argumentoceil(-42.8)-42
degrees(dp)dpradianos para grausdegrees(0.5)28.6478897565412
exp(dp ou numeric)(o mesmo da entrada)exponenciaçãoexp(1.0)2.71828182845905
floor(dp ou numeric)(o mesmo da entrada)o maior inteiro não maior que o argumentofloor(-42.8)-43
ln(dp ou numeric)(o mesmo da entrada)logaritmo naturalln(2.0)0.693147180559945
log(dp ou numeric)(o mesmo da entrada)logaritmo na base 10log(100.0)2
log(b numeric, x numeric)numericlogaritmo na base blog(2.0, 64.0)6.0000000000
mod(y, x)(o mesmo tipo dos argumentos)resto de y/xmod(9,4)1
pi()dpconstante "Pi"pi()3.14159265358979
pow(x dp, e dp)dpeleva um número ao expoente epow(9.0, 3.0)729
pow(x numeric, e numeric)numericeleva um número ao expoente epow(9.0, 3.0)729
radians(dp)dpgraus para radianosradians(45.0)0.785398163397448
random()dpvalor randômico entre 0.0 e 1.0random() 
round(dp ou numeric)(o mesmo da entrada)arredonda para o inteiro mais próximoround(42.4)42
round(v numeric, s integer)numericarredonda com s casas decimaisround(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 quadradasqrt(2.0)1.4142135623731
trunc(dp ou numeric)(o mesmo da entrada)trunca com zero casas decimaistrunc(42.8)42
trunc(v numeric, s integer)numerictrunca com s casas decimaistrunc(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.

Tabela 6-5. Funções trigonométricas

FunçãoDescrição
acos(x)função inversa do cosseno
asin(x)função inversa do seno
atan(x)função inversa da tangente
atan2(x, y)função inversa da tangente de x/y
cos(x)cosseno
cot(x)cotangente
sin(x)seno
tan(x)tangente