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.1 — DB2 Version 9 for Linux, UNIX, and Windows — Supported functions and administrative SQL routines and views |
[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.) |