- Funzioni sulle potenze, logaritmi e radici in SQL
Indice articolo
- Introduzione alla SQL (Structured Query Language)
- Query SQL
- Espressioni e operatori condizionali
- Operatori di insieme
- Funzioni SQL
- Funzioni sulle potenze, logaritmi e radici in SQL
- Funzioni in SQL - Esercizi capitolo 3
- Clausole SQL
- Clausole SQL - Esercizi capitolo 4
- Join - combinazioni di tabelle in SQL
- Subquery SQL
- Manipolare dati con SQL
- Creare e mantenere le tabelle
- View e Indici
- SQL - Soluzioni esercizi cap. 1
- SQL - Soluzioni esercizi cap. 2
- SQL - Soluzioni esercizi cap. 3
- SQL - Soluzioni esercizi cap. 4
- SQL - Soluzioni esercizi cap. 5
- SQL - Soluzioni esercizi cap. 6
Capitolo 3
Segue dalla pagina web precedente
CONCAT
Questa sintassi non è accettata da Access. L’equivalente di questa funzione è stato utilizzato nel Capitolo 2, quando si è parlato di operatori. Il simbolo usato nel capitolo 2 è il seguente: che unisce insieme due stringhe di caratteri, come la funzione CONCAT. Ecco un esempio:
SELECT CONCAT(NOME, COGNOME) "NOME E COGNOME"
FROM CARATTERI;
|
NOME E COGNOME -------------------------- |
| GIGIROSSI |
| MARIOBIANCHI |
| MARIANERI |
| ANGELOBRUNI |
| ANNASCURI |
| ANTONIOVERDI |
INITCAP
La funzione INITCAP trasforma in maiuscolo o lascia in maiuscolo il primo carattere di una parola e trasforma in minuscolo o lascia in minuscolo tutti gli altri caratteri. Questa funzione non è implementata da Access.
Vediamo un esempio:
SELECT NOME PRIMA, INITCAP(NOME) DOPO
FROM CARATTERI;
|
PRIMA ----------------- |
DOPO -------------- |
| GIGI | Gigi |
| MARIO | Mario |
| MARIA | Maria |
| ANGELO | Angelo |
| ANNA | Anna |
| ANTONIO | Antonio |
LOWER e UPPER
La funzione LOWER trasforma tutti i caratteri di una parola in maiuscolo; UPPER esegue l’operatore inversa. Questa funzione non è implementata da Access. Vediamo degli esempi:
UPDATE CARATTERI
SET NOME = 'Mario'
WHERE NOME = 'MARIO';
Aggiornata 1 riga.
Con questa espressione abbiamo modificato il formato con cui viene rappresentato uno dei nomi della tabella CARATTERI , al fine di accertarci che la funzione esegua il suo compito correttamente.
SELECT NOME, UPPER(NOME), LOWER(NOME)
FROM CARATTERI;
|
NOME ------------------ |
UPPER(NOME) -------------------------- |
LOWER(NOME) ------------------------- |
| GIGI | GIGI | gigi |
| Mario | MARIO | mario |
| MARIA | MARIA | maria |
| ANGELO | ANGELO | angelo |
| ANNA | ANNA | anna |
| ANTONIO | ANTONIO | antonio |
LPAD e RPAD
La ‘L’ e la ‘R’ stanno per left e right mentre ‘PAD’ significa in inglese cuscinetto.
Queste due funzioni richiedono da due a tre argomenti. Il primo argomento rappresenta le stringhe sulle quali operare. Il secondo argomento è il numero di caratteri da aggiungere alla stringa. Il terzo argomento (facoltativo) è il carattere da aggiungere, che può essere un singolo carattere o una stringa di caratteri; se non viene specificato, sarà automaticamente aggiunto uno spazio. Questa funzione non è implementata da Access. Vediamo alcuni esempi:
SELECT COGNOME, LPAD(COGNOME,20,'*')
FROM CARATTERI;
|
COGNOME -------------- |
LPAD(COGNOME,20,'*') ------------------------------- |
| ROSSI | ***************ROSSI |
| BIANCHI | *************BIANCHI |
| NERI | ****************NERI |
| BRUNI | ***************BRUNI |
| SCURI | ***************SCURI |
| VERDI | ***************VERDI |
SELECT COGNOME, LPAD(COGNOME,20,'tra')
FROM CARATTERI;
|
COGNOME --------------- |
LPAD(COGNOME,20,'TRA') ------------------------------- |
| ROSSI | tratratratratraROSSI |
| BIANCHI | tratratratratBIANCHI |
| NERI | tratratratratratNERI |
| BRUNI | tratratratratraBRUNI |
| SCURI | tratratratratraSCURI |
| VERDI | tratratratratraVERDI |
SELECT COGNOME, RPAD(COGNOME,20,'/')
FROM CARATTERI;
|
COGNOME ----------------- |
RPAD(COGNOME,20,'/') --------------------------- |
| ROSSI | ROSSI/////////////// |
| BIANCHI | BIANCHI///////////// |
| NERI | NERI//////////////// |
| BRUNI | BRUNI/////////////// |
| SCURI | SCURI/////////////// |
| VERDI | VERDI/////////////// |
LTRIM e RTRIM
La ‘L’ e la ‘R’ stanno per left e right mentre To trim in inglese significa anche tagliare.
Il primo argomento, come per le funzioni RPAD e LPAD, rappresenta le stringhe sulle quali operare. Il secondo argomento può essere un carattere o una stringa di caratteri. Queste due funzioni non sono implementate da Access.
Vediamo alcuni esempi:
SELECT NOME, RTRIM(NOME, 'O')
FROM CARATTERI;
|
NOME ---------------- |
RTRIM(NOME, ‘O’) ------------------------------- |
| GIGI | GIGI |
| MARIO | MARI |
| MARIA | MARIA |
| ANGELO | ANGEL |
| ANNA | ANNA |
| ANTONIO | ANTONI |
SELECT NOME, RTRIM(NOME, 'N')
FROM CARATTERI;
|
NOME ---------- |
RTRIM(NOME, ‘N’) ------------------------------- |
| GIGI | GIGI |
| MARIO | MARIO |
| MARIA | MARIA |
| ANGELO | ANGELO |
| ANNA | ANNA |
| ANTONIO | ANTONIO |
SELECT NOME, LTRIM(NOME, 'A')
FROM CARATTERI;
|
NOME ---------- |
LTRIM(NOME, ‘A’) ------------------------------ |
| GIGI | GIGI |
| MARIO | MARIO |
| MARIA | MARIA |
| ANGELO | NGELO |
| ANNA | NNA |
| ANTONIO | NTONIO |
REPLACE
REPACE permette di sostituire una stringa di caratteri con quella specifica. Richiede tre argomenti: il primo rappresenta le stringhe sulle quali effettuate le ricerche ; il secondo è la stringa da ricercare e sostituire; il terzo è facoltativo e specifica la stringa di sostituzione.
Se l’ultimo argomento non viene indicato, ogni ricorrenza della chiave di ricerca (stringa trovata) viene eliminata, senza essere sostituita da un’altra stringa. Questa funzione non è implementata da Access. Vediamo alcuni esempi:
SELECT NOME, REPLACE(NOME, 'R', '**')
FROM CARATTERI;
|
NOME |
REPLACE(NOME,'R','**) ------------------------------------ |
| GIGI | GIGI |
| MARIO | MA**IO |
| MARIA | MA**IA |
| ANGELO | ANGELO |
| ANNA | ANNA |
| ANTONIO | ANTONIO |
SELECT NOME, REPLACE(NOME, 'A')
FROM CARATTERI;
|
NOME --------------- |
REPLACE(NOME, ‘A’) ---------------------------------- |
| GIGI | GIGI |
| MARIO | MRIO |
| MARIA | MRI |
| ANGELO | NGELO |
| ANNA | NN |
| ANTONIO | NTONIO |
SUBSTR
Questa funzione consente si estrarre una serie di caratteri (sottostringa) da una stringa specificata. SUBSTR richiede tre argomenti: il primo è la stringa specificata da esaminare; il secondo è la posizione del primo carattere da estrarre; il terzo è il numero di caratteri da estrarre. Se il terzo parametro viene omesso la query visualizza tutti i caratteri rimanenti dopo la posizione specificata. Questa funzione non è implementata da Access. Vediamo alcuni esempi:
SELECT COGNOME, SUBSTR(COGNOME, 2, 3)
FROM CARATTERI;
|
COGNOME -------------- |
SUBSTR(COGNOME, 2, 3) ------------------------------- |
| ROSSI | OSS |
| BIANCHI | IAN |
| NERI | ERI |
| BRUNI | RUN |
| SCURI | CUR |
| VERDI | ERD |
SELECT COGNOME, SUBSTR(COGNOME,2)
FROM CARATTERI;
|
COGNOME ------------- |
SUBSTR(COCOGNOME, 2) -------------------------------- |
| ROSSI | OSSI |
| BIANCHI | IANCHI |
| NERI | ERI |
| BRUNI | RUNI |
| SCURI | CURI |
| VERDI | ERDI |
Se viene utilizzato un numero negativo come secondo argomento, la posizione iniziale viene determinata contando la stringa da destra verso sinistra iniziando dal suo ultimo carattere. Vediamo alcuni esempi:
SELECT COGNOME, SUBSTR(COGNOME,-4, 2)
FROM CARATTERI;
|
COGNOME -------------- |
SUBSTR(COGNOME, -4, 2) --------------------------------- |
| ROSSI | OS |
| BIANCHI | NC |
| NERI | NE |
| BRUNI | RU |
| SCURI | CU |
| VERDI | ER |
SELECT COGNOME, SUBSTR(COGNOME,-5, 2)
FROM CARATTERI;
|
COGNOME ----------------- |
SUBSTR(COGNOME,-5, 2) ------------------------------- |
| ROSSI | RO |
| BIANCHI | AN |
| NERI | |
| BRUNI | BR |
| SCURI | SC |
| VERDI | VE |
Vediamo un esempio in cui vogliamo visualizzare solo le iniziali dei nominativi presenti in CARATTERI:
SELECT SUBSTR(NOME, 1, 1) ' - ' SUBSTR(COGNOME, 1, 1)
FROM CARATTERI;
|
SUBST --------- |
| G - R |
| M - B |
| M - N |
| A - B |
| A - S |
| A - V |
INSTR
La funzione INSTR permette di sapere in quale punto di una stringa si trova un particolare schema di caratteri. Il primo argomento della funzione è la stringa da esaminare. Il secondo argomento è lo schema da ricercare. Il terzo e il quarto argomento sono numeri che indicano dove iniziare le ricerche e quale tipo di corrispondenza fornire. Vediamo alcuni esempi:
SELECT COGNOME, INSTR(COGNOME, 'I', 2, 1)
FROM CARATTERI;
|
COGNOME ------------- |
INSTR(COGNOME, 'I', 2, 1) ------------------------------ |
| ROSSI | 5 |
| BIANCHI | 2 |
| NERI | 4 |
| BRUNI | 5 |
| SCURI | 5 |
| VERDI | 5 |
SELECT COGNOME, INSTR(COGNOME, 'I', 2, 2)
FROM CARATTERI;
|
COGNOME ------------- |
INSTR(COGNOME,'I',2,2) ------------------------------ |
| ROSSI | 0 |
| BIANCHI | 7 |
| NERI | 0 |
| BRUNI | 0 |
| SCURI | 0 |
| VERDI | 0 |
SELECT COGNOME, INSTR(COGNOME, 'R', 2, 2)
FROM CARATTERI;
|
COGNOME -------------- |
INSTR(COGNOME, 'R', 2, 2) ------------------------------- |
| ROSSI | 0 |
| BIANCHI | 0 |
| NERI | 0 |
| BRUNI | 0 |
| SCURI | 0 |
| VERDI | 0 |
SELECT COGNOME, INSTR(COGNOME, 'N', 2, 1)
FROM CARATTERI;
|
COGNOME -------------- |
INSTR(COGNOME, 'N', 2, 1) ------------------------------ |
| ROSSI | 0 |
| BIANCHI | 4 |
| NERI | 0 |
| BRUNI | 4 |
| SCURI | 0 |
| VERDI | 0 |
SELECT NOME, INSTR(NOME, 'N', 2, 2)
FROM CARATTERI;
|
COGNOME ------------- |
INSTR(NOME, 'N', 2, 2) --------------------------- |
| ROSSI | 0 |
| BIANCHI | 0 |
| NERI | 0 |
| BRUNI | 0 |
| SCURI | 3 |
| VERDI | 5 |
Il valore di default per il terzo e il quarto argomento è 1.
Access implementa questa funzione usando un’altra sintassi, vediamo come:
InStr([inizio, ]stringa1, stringa2[, confronto])
La sintassi della funzione InStr è composta dai seguent argomenti:
- inizio Facoltativa. Espressione numerica che definisce la posizione di inizio per ciascuna ricerca. Se omessa, la ricerca inizia dalla posizione del primo carattere.
- stringa1 Obbligatoria. Espressione stringa oggetto della ricerca.
- stringa2 Obbligatoria. Espressione stringa cercata.
- confronto Facoltativa. Specifica il tipo di confronto di stringa. Per ulteriori informazioni consultare la guida in linea.
LENGTH
La sintassi accettata da Access per tale funzione è: Len(nome_campo)
La funzione LENGTH restituisce la lunghezza del suo argomento, come in questo esempio:
SELECT NOME, LENGTH(NOME)
FROM CARATTERI;
|
NOME ------------ |
LENGTH(NOME) --------------------- |
| GIGI | 4 |
| MARIO | 5 |
| MARIA | 5 |
| ANGELO | 6 |
| ANNA | 4 |
| ANTONIO | 7 |
Funzione USER
Questa funzione restituisce il nome dell’utente corrente alla tabella specificata. Questa funzione non è implementata da Access. Vediamo un esempio:
SELECT USER
FROM CARATTERI;
|
USER -------------------------- |
| DEMO |
| DEMO |
| DEMO |
| DEMO |
| DEMO |
| DEMO |
Art Net - 6.2.2006
Tags: SQL funzioni potenze logaritmi radici caratteri

