Funzioni per le stringhe e funzioni matematiche
MySQL è corredato nativamente da un largo numero di funzioni atte a svolgere le più disparate funzioni. A partire da questa lezione cercheremo di affrontare, anche se in modo succinto, le principali di queste al fine di fornire al lettore gli strumenti essenziali per lavorare col DBMS.
Da un punto di vista espositivo suddivideremo le funzioni di MySQL oggetto della nostra attenzione in quattro categorie:
- Funzioni per le stringhe
- Funzioni matematiche
- Funzioni per le date
- Funzioni condizionali
Una quinta (importante) categoria di funzioni è rappresentata dalle cosiddette funzioni di aggregazione.
All’interno di questa lezione ci occuperemo dei primi due gruppi.
Funzioni per le stringhe di MySQL
Attraverso questa tipologia di funzioni è possibile manipolare le stringhe all’interno delle query. E’ evidente che il loro principale ambito di applicazione saranno i campi che possono contenere valori testuali (CHAR, VARCHAR, TEXT, BLOB, ENUM e SET).
Vediamo di seguito alcune delle funzioni più interessanti di questa famiglia.
TRIM, LTRIM e RTRIM
Queste tre funzioni servono ad eliminare gli spazi vuoti lasciati all’inizio e/o alla fine di una stringa. Più precisamente la funzione LTRIM rimuoverà gli spazi prima del testo, RTRIM quelli dopo il testo e TRIM entrambi.
SELECT TRIM(testo) FROM articoli WHERE id = 1;
Supponendo che il contenuto originale del campo sia ” bla bla bla ” otterremo “bla bla bla”.
REPLACE
La funzione REPLACE consente di effettuare delle sostituzioni all’interno di una stringa. Ad esempio:
SELECT REPLACE(nome,'o','a') FROM amici WHERE nome = 'Mario';
La query nel nostro esempio restituirà “Maria” in quanto lo “o” finale è stata sostituita con la “a”.
SUBSTRING e MID
Queste due funzioni consentono di di “tagliare” delle porzioni di una stringa. Con SUBSTRING la stringa viene mostrata a partire dal carattere specificato (compreso). Ad esempio:
SELECT SUBSTRING(nome,3) FROM amici WHERE id = 1;
Supponendo che il valore originale del campo “nome” per l’id 1 sia “Mario” otterremo in risa alla nostra query il valore “rio”.
La funzione MID, invece, ci consente di estrarre la porzione centrale di una stringa specificando (oltre alla stringa su cui operare, ovviamente) il carattere di partenza ed il numero di caratteri da includere:
SELECT SUBSTRING(nome,2,3) FROM amici WHERE id = 1;
la nostra query restituirà: “ari”.
CONCAT
La funzione CONCAT è utilizzata per concatenare due o più stringhe. Ad esempio:
SELECT CONCAT(nome,cognome) FROM amci WHERE id = 1;
Restituirà: “MarioRossi”.
Per ottenere un output più “aggrazziato” avremmo potuto utilizzare:
SELECT CONCAT(nome,' ',cognome) FROM amci WHERE id = 1;
la quale restituirà: “Mario Rossi”.
UCASE e LCASE
L funzioni UCASE e LCASE di MySQL trasformano il testo rispettivamente in maiuscolo e minuscolo. Ad esempio supponiamo di vole estrarre il nome del record con id 1 (che, come già visto in precedenti esempi, corrisponde a “Mario”):
SELECT UCASE(nome) FROM amici WHERE id = 1;
Restituirà “MARIO”, mentre:
SELECT LCASE(nome) FROM amici WHERE id = 1;
Restituirà “mario”.
Per una visione più completa e dettagliata delle funzioni per la manipolazione delle stringhe rimando lla documentazione ufficiale di MySQL.
Funzioni matematiche
Di seguito un elenco delle più utilizzate.
CEIL, FLOOR e ROUND
Queste tre funzioni sono utilizzate per arrotondare numeri decimali. CEIL arrotonda al numero intero maggiore, FLOOR all’intero minore. Più complessa la funzione ROUND che consente di arrotondare un numero specificando il numero di decimali da mantenere ed offrendo in risa il numero più vicino al valore originale.
Volendo fare alcuni esempi ipotiziamo di voler arrotondare un campo prezzo il cui valore originale è 120.68:
SELECT CEIL(prezzo) FROM catalogo WHERE id = 1;
Risultato: 120
SELECT FLOOR(prezzo) FROM catalogo WHERE id = 1;
Risultato: 121
SELECT ROUND(prezzo,1) FROM catalogo WHERE id = 1;
Risultato: 120.7
MOD
La funzione MOD richiede due parametri numerici e restituisce il valore del resto della divisione intera del primo per il secondo. Ad esempio:
SELECT MOD(5,2);
Restituirà: 1 (il 2 sta due volte nel 5 col resto di 1).
RAND
La funzione RAND di MySQL restituisce un valore numerico casuale compreso tra 0 e 1.
Per una visione più completa sulle funzioni matematiche di MySQL rimando il lettore alla consultazione della documentazione ufficiale.