Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Funzioni e Operatori > Funzioni e operatori matematici
PrecedenteOperatori di confrontoFunzioni e operatori sulle stringheSuccessivo

9.3. Funzioni e operatori matematici

In PostgreSQL™ gli operatori matematici sono forniti per molti tipi di dato. Per i tipi fuori dalle convenzioni matematiche comuni (per es., i tipi data/orario), nelle sezioni successive verrà descritto l'effettivo comportamento.

La Tabella 9.2, «Operatori matematici» mostra gli operatori matematici disponibili.

Tabella 9.2. Operatori matematici

OperatoreDescrizioneEsempioRisultato
+ addizione2 + 35
- sottrazione2 - 3-1
* moltiplicazione2 * 36
/ divisione (le divisioni di interi troncano il risultato)4 / 22
% modulo (resto)5 % 41
^ elevamento a potenza2.0 ^ 3.08
|/ radice quadrata|/ 25.05
||/ radice cubica||/ 27.03
! fattoriale5 !120
!! fattoriale (con operatore prefisso)!! 5120
@ valore assoluto@ -5.05
& AND per singolo bit91 & 1511
| OR per singolo bit32 | 335
# xOR per singolo bit17 # 520
~ NOT per singolo bit~1-2
<< spostamento a sinistra per singolo bit1 << 416
>> spostamento a destra per singolo bit8 >> 22

Gli operatori per singoli bit lavorano solo su tipi dati integrali, mentre gli altri sono utilizzabili per tutti i tipi dati numerici. Gli operatori per singoli bit sono anche utilizzabili per i tipi stringa di bit e bit varying, come mostrato nella tabella Tabella 9.10, «Operatori per stringhe di bit».

La Tabella 9.3, «Funzioni matematiche» mostra le funzioni matematiche disponibili. Nella tabella, dp indica doppia precisione. Molte di queste funzioni sono fornite in forme multiple con diversi tipi di argomenti. Eccetto dove annotato, ogni forma di funzione fornita restituisce lo stesso tipo di dato del suo argomento. Le funzioni che lavorano con dati in doppia precisione sono implementate principalmente sulla libreria C del sistema host; la precisione e il comportamento in casi limite può quindi variare in dipendenza del sistema host.

Tabella 9.3. Funzioni matematiche

FunzioneTipo restituitoDescrizioneEsampioRisultato
abs (x)(uguale a x)valore assolutoabs(-17.4)17.4
cbrt(dp)dpradice cubicacbrt(27.0)3
ceil(dp or numeric)(uguale a quello in input)il più piccolo intero non inferiore all'argomentoceil(-42.8)-42
ceiling(dp or numeric)(uguale a quello in input)il più piccolo intero non inferiore all'argomento (alias per ceil)ceiling(-95.3)-95
degrees(dp)dpda radianti a gradidegrees(0.5)28.6478897565412
exp(dp or numeric)(uguale a quello in input)esponenzialeexp(1.0)2.71828182845905
floor(dp or numeric)(uguale a quello in input)il più grande intero non superiore all'argomentofloor(-42.8)-43
ln(dp or numeric)(uguale a quello in input)logaritmo naturaleln(2.0)0.693147180559945
log(dp or numeric)(uguale a quello in input)logaritmo in base 10log(100.0)2
log(b numeric, x numeric)numericlogaritmo in base blog(2.0, 64.0)6.0000000000
mod(y, x)(uguale a quello degli argomenti)resto di y/xmod(9,4)1
pi()dpcostante «pi»pi()3.14159265358979
power(to dp, b dp)dpto elevato alla potenza di bpower(9.0, 3.0)729
power(to numeric, b numeric)numericto elevato alla potenza di bpower(9.0, 3.0)729
radians(dp)dpda gradi a radiantiradians(45.0)0.785398163397448
random()dpvalori casuali tra 0.0 e 1.0random() 
round(dp or numeric)(uguale a quello in input)arrotondamento all'intero più vicinoround(42.4)42
round(v numeric, s int)numericarrotondamento alle s cifre decimaliround(42.4382, 2)42.44
setseed(dp)voidimpostazione seme (seed) per le successive chiamate random() (valore tra 0 e 1.0)setseed(0.54823) 
sign(dp or numeric)(uguale a quello in input)segno dell'argomento (-1, 0, +1)sign(-8.4)-1
sqrt(dp or numeric)(uguale a quello in input)radice quadratasqrt(2.0)1.4142135623731
trunc(dp or numeric)(uguale a quello in input)troncamento verso lo zerotrunc(42.8)42
trunc(v numeric, s int)numerictroncamento alle s cifre decimalitrunc(42.4382, 2)42.43
width_bucket(op numeric, b1 numeric, b2 numeric, count int)intrestituisce il segmento (bucket) al quale op sarà assegnato in un istogramma equi-dept con count segmenti (bucket), nella sequenza di valori da b1 a b2width_bucket(5.35, 0.024, 10.06, 5)3
width_bucket(op dp, b1 dp, b2 dp, count int)intrestituisce il segmento (bucket) al quale op sarà assegnato in un istogramma equi-dept con count segmenti (bucket), nella sequenza di valori da b1 a b2width_bucket(5.35, 0.024, 10.06, 5)3

Infine, la Tabella 9.4, «Funzioni trigonometriche» mostra le funzioni trigonometriche disponibili. Tutte le funzioni trigonometriche accettano argomenti e restituiscono valori di tipo doppia precisione. Gli argomenti delle funzioni trigonometriche sono espressi in radianti. Vedere sopra le funzioni di trasformazione di unità radians() e degrees().

Tabella 9.4. Funzioni trigonometriche

FunzioneDescrizione
acos(x)coseno inverso
asin(x)seno inverso
atan(x)tangente inversa
atan2(y, x)tangente inversa di y/x
cos(x)coseno
cot(x)cotangente
sin(x)seno
tan(x)tangente

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Funzioni e Operatori > Funzioni e operatori matematici
PrecedenteOperatori di confrontoFunzioni e operatori sulle stringheSuccessivo