9.3. Funções e operadores matemáticos

São fornecidos operadores matemáticos para muitos 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 9-2 mostra os operadores matemáticos disponíveis.

Tabela 9-2. Operadores matemáticos

Operador 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 bit a bit 91 & 15 11
| OR bit a bit 32 | 3 35
# XOR bit a bit 17 # 5 20
~ NOT bit a bit ~1 -2
<< deslocamento à esquerda bit a bit 1 << 4 16
>> deslocamento à direita bit a bit 8 >> 2 2

Os operadores bit a bit [1] trabalham somente em tipos de dado inteiros, enquanto os demais estão disponíveis para todos os tipos de dado numéricos. Os operadores bit a bit também estão disponíveis para os tipos cadeia de bits bit e bit varying, conforme mostrado na Tabela 9-12.

A Tabela 9-3 mostra as funções matemáticas disponíveis. Nesta tabela "dp" significa double precision. Muitas destas funções são fornecidas em várias formas, com diferentes tipos de dado dos argumentos. Exceto onde estiver indicado, todas as formas das funções retornam o mesmo tipo de dado de seu argumento. As funções que trabalham com dados do tipo double precision são, em sua maioria, implementadas usando a biblioteca C do sistema hospedeiro; a precisão e o comportamento em casos limites podem, portanto, variar dependendo do sistema hospedeiro.

Tabela 9-3. 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
ceiling(dp ou numeric) (o mesmo da entrada) o menor inteiro não menor que o argumento (o mesmo que ceil) ceiling(-95.3) -95
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() 3.14159265358979
power(a dp, b dp) dp a elevado a b power(9.0, 3.0) 729
power(a numeric, b numeric) numeric a elevado a b power(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) arredondar para o inteiro mais próximo round(42.4) 42
round(v numeric, s integer) numeric arredondar para s casas decimais round(42.4382, 2) 42.44
setseed(dp) integer define a semente para as próximas chamadas a random() setseed(0.54823) 1177314959
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 em direção ao zero trunc(42.8) 42
trunc(v numeric, s integer) numeric trunca com s casas decimais trunc(42.4382, 2) 42.43
width_bucket(operando numeric, b1 numeric, b2 numeric, contador integer) integer retorna a barra à qual o operando seria atribuído, em um histograma equidepth com contador barras, um limite superior de b1, e um limite inferior de b2 width_bucket(5.35, 0.024, 10.06, 5) 3

A Tabela 9-4 mostra as funções trigonométricas disponíveis. Todas as funções trigonométricas recebem argumentos e retornam valores do tipo double precision.

Tabela 9-4. Funções trigonométricas

Função Descrição
acos(x) arco cosseno
asin(x) arco seno
atan(x) arco tangente
atan2(x, y) arco tangente de x/y
cos(x) cosseno
cot(x) cotangente
sin(x) seno
tan(x) tangente

A Tabela 9-5 compara as funções matemáticas do Oracle 10g, do SQL Server 2005, do DB2 9 e do PostgreSQL 8.0.0.

Nota: Tabela escrita pelo tradutor, não fazendo parte do manual original.

Tabela 9-5. Funções matemáticas do Oracle 10g, do SQL Server 2005, do DB2 9 e do PostgreSQL 8.0.0

Função Oracle 10g [a] [b] SQL Server 2005 [c] DB2 9.1 [d] PostgreSQL 8.0.0
valor absoluto abs(n) abs(n) abs(n) ou absval(n) abs(x)
arco cosseno acos(n) acos(f) acos(d) acos(x)
arco seno asin(n) asin(f) asin(d) asin(x)
arco tangente de n atan(n) atan(f) atan(d) atan(x)
arco tangente de x/y atan2(n, m) atn2(f, f) atan2(d, d) atan2(x, y)
raiz cúbica - - - cbrt(dp)
menor inteiro não menor que o argumento ceil(n) ceiling(n) ceil(n) ou ceiling(n) ceil(dp ou numeric)
cosseno cos(n) cos(f) cos(d) cos(x)
cosseno hiperbólico cosh(n) - cosh(d) -
cotangente - cot(f) cot(d) cot(x)
radianos para graus - degrees(n) degrees(d) degrees(dp)
exponenciação exp(n) exp(f) exp(d) exp(dp ou numeric)
maior inteiro não maior que o argumento floor(n) floor(n) floor(n) floor(dp ou numeric)
logaritmo natural ln(n) log(f) ln(d) ou log(d) ln(dp ou numeric)
logaritmo, qualquer base log(m, n) - - log(b numeric, x numeric)
logaritmo, base 10 log(10, n) log10(f) log10(d) log(dp ou numeric)
módulo (resto) mod(m, n) dividendo % divisor mod(n, n) mod(y, x)
constante π - pi() radians(180) pi()
potenciação power(m, n) power(f, y) power(n, n) pow(a dp, b dp) e pow(a numeric, b numeric)
graus para radianos - radians(n) radians(d) radians(dp)
número randômico - rand() rand() random()
arredondar para o inteiro mais próximo round(n) round(n,0) round(n,0) round(dp ou numeric)
arredondar para s casas decimais round(n [,s integer]) round(n, s integer [,função]) round(n, s integer) round(v numeric, s integer)
define a semente para as próximas chamadas a random() - rand(semente) rand(semente) setseed(dp)
sinal do argumento (-1, 0, +1) sign(n) sign(n) sign(n) sign(dp ou numeric)
seno sin(n) sin(f) sin(d) sin(x)
seno hiperbólico sinh(n) - sinh(d) -
raiz quadrada sqrt(n) sqrt(f) sqrt(d) sqrt(dp ou numeric)
tangente tan(n) tan(f) tan(d) tan(x)
tangente hiperbólica tanh(n) - tanh(d) -
trunca em direção ao zero trunc(n) - trunc(n, 0) trunc(dp ou numeric)
trunca com s casas decimais trunc(n [,s integer]) - trunc(n ,s integer) trunc(v numeric, s integer)
Notas:
a. Oracle 10g — As funções numéricas recebem entradas numéricas e retornam valores numéricos. A maior parte destas funções retornam valores com precisão de 38 dígitos decimais. As funções transcendentais cos, cosh, exp, ln, log, sin, sinh, sqrt, tan e tanh têm precisão de 36 dígitos decimais. As funções transcendentais acos, asin, atan e atan2 têm precisão de 30 dígitos decimais. Oracle® Database SQL Reference 10g Release 1 (10.1) Part Number B10759-01 (N. do T.)
b. Função transcendental — Em matemática, uma função que não pode ser expressa como uma combinação finita de operações algébricas de adição, subtração, multiplicação, divisão, elevar a uma potência ou extrair uma raiz. Os exemplos incluem as funções log x, sin x, cos x, ex e qualquer função contendo uma destas. Estas funções são expressas em termos algébricos apenas como séries infinitas. Em geral, o termo transcendental significa não-algébrico. transcendental function — Britannica Concise Encyclopedia
c. SQL Server 2005 — As funções abs, ceiling, degrees, floor, power e radians retornam um valor que possui o mesmo tipo de dado da expressão numérica da entrada. As funções acos, asin, atan, cos, cot, exp, log, log10, sin, sqrt, square e tan recebem como argumento uma expressão de ponto flutuante, e retornam um valor de ponto flutuante. Todas as funções matemáticas, exceto rand, são funções determinísticas; retornam o mesmo resultado toda vez que são chamadas com o mesmo conjunto de valores de entrada. rand só é determinística quando é especificado o parâmetro semente. SQL Server 2005 Books Online — Mathematical Functions (Transact-SQL)
d. DB2 9.1DB2 Version 9 for Linux, UNIX, and Windows — Supported functions and administrative SQL routines and views

Notas

[1]

bitwise — um operador bit a bit trata seus operandos como um vetor de bits, em vez de como um único número. FOLDOC - Free On-Line Dictionary of Computing (N. do T.)

SourceForge.net Logo CSS válido!