Come abbiamo visto, tramite le query possiamo estrarre il contenuto delle tabelle del database. Finora, abbiamo estratto i dati così come erano stati memorizzati, tuttavia l’SQL ci permette, tramite una serie di funzioni, di manipolare in qualche maniera i dati che andiamo ad estrarre in modo tale da restituirci qualcosa di più consono a quelle che possono essere le nostre esigenze.
A seconda del tipo di dato che stiamo estraendo abbiamo tutta una serie di funzioni per alaborarlo. Di seguito passeremo in rassegna un elenco di funzioni, con relativi semplici esempi, per le seguenti tipologie di dati:
- Stringhe
- Numeri
- Date
Attenzione: in questa sede, ovviamente, non è possibile una trattazione completa di tutte le funzioni disponibili, ci limiteremo – pertanto – a scorrere in rassegnal le funzioni più conosciute ed utilizzate.
Funzioni per le stringhe
Vedremo di seguito le seguenti funzioni per le stringhe:
- SUBSTR
- INSTR
- CONCAT
- LIKE
Prima di procedere, dato che utilizzeremo la nostra tabella "Anagrafica", eseguiamo una query per verificarne il contenuto. Dovrebbe presentarsi come di seguito:
Nome | Cognome | Stipendio | Ruolo |
---|---|---|---|
Mario | Rossi | 20000 | Impiegato |
Carlo | Neri | 35000 | Quadro |
Lucia | Bianchi | 20000 | Impiegato |
Maria | Viola | 35000 | Quadro |
Marco | Marrone | 25000 | Impiegato |
SUBSTR
La funzione SUBSTR ha la seguente sintassi:
SUBSTR(x,y[,z])
ed ha lo scopo di restituire una porzione di stringa. Più precisamente, la funziome SUBSTR restituisce una porzione della stringa x che inizia alla posizione y ed ha lunghezza pari a z caratteri o fino alla fine della stringa se z è omesso. Per intenderci, se scriviamo:
SELECT SUBSTR(Nome,2) FROM Anagrafica WHERE Cognome = 'Marrone';
otterremo come risultato: "arco".
Se invece avessimo scritto:
SELECT SUBSTR(Nome,2,3) FROM Anagrafica WHERE Cognome = 'Marrone';
avremmo ottenuto come risultato: "arc".
INSTR
La funzione INSTR presenta la seguente sintassi:
INSTR(x,y[,z])
ed ha lo scopo di restituire la posizione della stringa y all’interno della stringa x eventualmente partendo dalla posizione z o dalla prima posizione se z è omesso. Per intenderci, se scriviamo:
SELECT INSTR('La mia stringa.','mia') FROM DUAL;
Otterremo come risultato: 4.
Se invece scriviamo:
SELECT INSTR('La mia stringa.','mia',5) FROM DUAL;
Otterremo come risultato: 0.
CONCAT
La funzione CONCAT, la cui sintassi è la seguente:
CONCAT(x,y,[z])
restituisce la stringa che si ottiene concatenando le stringhe x, y, z… Per intenderci, se scriviamo:
SELECT CONCAT(Nome,Cognome) FROM Anagrafica WHERE Cognome = 'Marrone';
Otterremo come risultato: ‘MarcoMarrone’.
Si noti che esiste un altro operatore per la concatenazione delle stringhe ed è costituito dai caratteti ||. Se infatti scriviamo:
SELECT Nome || Cognome FROM Anagrafica WHERE Cognome = 'Marrone';
Otterremo ugualmente come risultato: ‘MarcoMarrone’.
LIKE
La funzione LIKE permette un confronto fra stringhe di caratteri utilizzando dei modelli costruiti con i caratteri speciali ‘%’ e ‘_’. Il primo sostituisce un numero imprecisato di caratteri (anche 0), mentre il secondo ne sotituisce uno solo. Per intenderci, se scriviamo:
SELECT * FROM Anagrafica WHERE Nome like 'M%';
Otterremo come risultato:
Nome | Cognome | Stipendio | Ruolo |
---|---|---|---|
Mario | Rossi | 20000 | Impiegato |
Maria | Viola | 35000 | Quadro |
Marco | Marrone | 25000 | Impiegato |
Se invece scriviamo:
SELECT * FROM Anagrafica WHERE Nome like 'Mari_';
Otterremo come risultato:
Nome | Cognome | Stipendio | Ruolo |
---|---|---|---|
Mario | Rossi | 20000 | Impiegato |
Maria | Viola | 35000 | Quadro |