L'ultimo articolo scritto su Sir Bit risale a marzo 2014. La versione che state visitando è un archivio: le pagine sono accessibili come sempre e gli autori potrebbero rispondere ai commenti, ma non saranno inseriti dei nuovi articoli. Visita questa pagina per i dettagli.

MYSQL – Usare funzioni matematiche direttamente nella query

Lavagna verde piena di formule matematiche

Il mysql ci mette a disposizione delle formule native per il calcolo all’interno delle query (1)

Se siete abituati a eseguire calcoli attraverso i linguaggi di programmazione lato server (come php e asp) e poi a riportare il risultato nelle query mysql, non sentitevi esclusi: è la procedura più comune. Questo perché i linguaggi di programmazione standard mettono a disposizione un numero di funzioni matematiche più complete rispetto a quelle eseguibili da mysql.

Ma in alcune situazioni, per esempio in una join molto complessa, diventa difficile (e a volte impossibile) eseguire un calcolo prima dell’avvio della query. Ecco quindi che le funzioni native del mysql sono indispensabili.

In questo articolo elenco, suddivisi secondo la tipologia, le varie funzioni matematiche del mysql con una breve spiegazione e un esempio di utilizzo di base. Per un approfondimento potete leggervi la documentazione che trovate in fondo.

ABS(X)
Restituisce il valore assoluto del valore passato.
SELECT ABS(-10);

ACOS(X)
ASIN(X)
ATAN(X)
COS(X)
COT(X)
SIN(X)
TAN(X)

Ritornano rispettivamente l’arcocoseno, l’arcoseno, l’arcotangente, il coseno, la cotangente, il seno e la tangente del valore passato.
Nella funzione dell’arcotangente possono essere passati due valori (mettiamo siano X, Y): in questo caso è come calcolare l’arcotangente di Y diviso X.
SELECT ACOS(0);
SELECT ASIN(0.2);
SELECT ATAN(2);
SELECT COS(PI());
SELECT COT(12);
SELECT SIN(PI());
SELECT TAN(PI());

CEIL(X) oppure CEILING(X)
FLOOR(X)

Entrambi i tipi di funzioni trasformano il valore passato in un intero. Ma nella prima l’intero risultante sarà sempre maggiore o uguale a X, mentre nella seconda sarà sempre minore o uguale a X. L’esempio qui sotto, quindi, darà come risultato rispettivamente 3 e 2.
SELECT CEILING(2.4)
SELECT FLOOR(2.4)

CONV(N, from_base, to_base)
Trasforma il formato di un numero, dal formato “from_base” al formato “to_base”. La base deve essere compresa tra 2 e 36. Il seguente esempio trasforma la stringa “a” da base 16 a base 2.
SELECT CONV(‘a’,16,2);

DEGREES(X)
Trasforma il valore da gradiante a gradi.
SELECT DEGREES(PI());

RADIANS(X)
Trasforma il valore da gradi a gradiante. E’ il contrario di DEGREES().


EXP(X)
Riporta il risultato della costante “e” (pari a circa 2,71) elevato alla X.
SELECT EXP(0);

LOG(X) oppure LN(X)
Ritorna il logaritmo naturale di X. E’ la funzione inversa di EXP().
Se la prima funzione è richiamata con due parametri, del tipo LOG(B, X), allora calcola il logaritmo di X in base B. In pratica sarebbe come fare la divisione tra LOG(X) e LOG(B).
SELECT LOG(1);
SELECT LOG(1,100);

LOG2(X)
LOG10(X)

Funzionano come LOG(X) rispettivamente su base 2 e su base 10.

MOD(N,M)
N % M
N MOD M

Restituisce il resto della divisione tra N e M.

PI()
Semplice funzione per restituire il pi greco.

POW(X,Y) oppure POWER(X,Y)
Calcola la potenza di X elevato alla Y.

ROUND(X,D)
Arrotonda X alla cifra decimale indicata da D. Se D non è specificato, è considerato a 0.
Nel primo esempio il risultato sarà 3, mentre nel secondo il risultato sarà 3.6
SELECT ROUND(-3.5);
SELECT ROUND(3.63, 1);

TRUNCATE(X,D)
Funziona come ROUND(), ma non arrotonda: tronca semplicemente il numero alla cifra decimale specificata.

SIGN(X)
Resistuisce -1 se X è negativo, 1 se è positivo e 0 altrimenti.

SQRT(X)
Restituisce la radice quadrata del valore passato, che non deve essere negativo.

Fonti esterne

La pagina ufficiale MYSQL relativa alle funzioni matematiche

Copyright immagini

(1) http://it.depositphotos.com/3473824/stock-illustration-Mathematics-background.html

Etichette
Etichette:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.