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] também estão disponíveis para os tipos cadeia de bits bit e bit varying, conforme mostrado na Tabela 9-3 . Devem ser do mesmo comprimento as cadeias de bits operandos de &, | e #. Ao ser feito o deslocamento de bits é preservado o comprimento original da cadeia de bits, conforme mostrado nos exemplos.
Tabela 9-3. Operadores bit a bit 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 9-4 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-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() | 3.14159265358979 |
pow (a dp, b dp) |
dp | a elevado a b | pow(9.0, 3.0) | 729 |
pow (a numeric, b numeric) |
numeric | a elevado a b | 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) | 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) |
int32 | 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 |
A Tabela 9-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 9-5. 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-6 compara as funções matemáticas e trigonométricas do Oracle , do SQL Server , do DB2 e do PostgreSQL 7.4.1.
Nota: Tabela escrita pelo tradutor, não fazendo parte do manual original.
Tabela 9-6. Funções matemáticas e trigonométricas do Oracle 9i, do SQL Server 2000, do DB2 8.1 e do PostgreSQL 7.4.1
Função | Oracle 9i [a] | SQL Server 2000 [b] | DB2 8.1 | PostgreSQL 7.4.1 |
---|---|---|---|---|
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) |
- | - | - |
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 () |
- | pi () |
potenciação | power (m, n) |
power (n, y) |
power (n, n) |
pow (a dp, b dp) e pow (a numeric, b numeric) |
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) |
- | - | - |
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) |
- | - | - |
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 9i — 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. b. SQL Server 2000 — As funções aritméticas, tais como ABS, CEILING, DEGREES, FLOOR, POWER, RADIANS e SIGN, retornam um valor que possui o mesmo tipo de dado do valor da entrada. As funções trigonométricas e as demais funções, incluindo EXP, LOG, LOG10, SQUARE e SQRT convertem seus valores de entrada em 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 um determinado conjunto de valores de entrada. RAND só é determinística quando é especificado o parâmetro semente. |
[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.) |