5° Anno TEORIA 4. Introduzione al linguaggio SQL | Page 37

16 . Il linguaggio SQL Vers . 9.3 – Marzo 2024
N . B . Se volessimo conoscere il CHARACTER SET di una tabella possiamo utilizzare l ’ istruzione :
SHOW [ FULL ] COLUMNS FROM nome _ tabella [ FROM nome _ db ]
[ LIKE ' pattern ' | WHERE espr ]
SHOW COLUMNS è un ’ istruzione in grado di mostrare le informazioni sulle colonne di una data tabella e funziona anche con le viste . La clausola LIKE , se presente , retringe l ' output alle colonne i cui nomi corrispondono al pattern . La clausola WHERE può essere usata per specificare condizioni più generiche , come spiegato in http :// dev . mysql . com / doc / refman / 5.1 / en / extended-show . html .
Immaginiamo di volere effettuare delle QUERY case-sensitive in MySql su tabelle appositamente create a tale scopo ottenute con COLLATION case-sensitive
Esempio : Per quanto detto prima prendiamo in considerazione un database case sensitive costruito con la seguente istruzione eseguita dalla shell di MySQL :
CREATE DATABASE db _ cs DEFAULT CHARSET = latin1 COLLATE = latin1 _ general _ cs ;
contenente l ' unica tabella Cliente creata con la seguente istruzione eseguita anch ' essa dalla shell di MySQL :
CREATE TABLE Cliente ( CodC VARCHAR ( 10 ) NOT NULL , Cognome VARCHAR ( 30 ) NOT NULL , Nome VARCHAR ( 30 ) NOT NULL , PRIMARY KEY ( CodC ) ) Engine InnoDB DEFAULT CHARSET = latin1 COLLATE = latin1 _ general _ cs ;
Ipotizziamo che in questa tabella siano presenti due clienti , uno con cognome " Rossi " e l ' altro con tutte le lettere minuscole " rossi ".
Il cognome è lo stesso ma il dato è differente . Se eseguiamo la seguente query :
SELECT * FROM Cliente WHERE Cognome = " Rossi ";
quest ' ultima visualizzerà soltanto i dati del cliente con cognome uguale a " Rossi " escludendo l ' altro .
Per consentire la visualizzazione dei dati di entrambi i record ( " Rossi " e " rossi " ) si devono operare delle accortezze all ' interno della SELECT utilizzando le funzioni SQL LOWER e UPPER .
Le funzioni LOWER e UPPER trasformano rispettivamente il dato in lettere minuscole o maiuscole . Quindi entrambe le query :
SELECT * FROM Cliente WHERE LOWER ( Cognome ) = " rossi "; oppure
SELECT * FROM Cliente WHERE UPPER ( Cognome ) = " ROSSI ";
permetteranno la visualizzazione dei dati di entrambi i clienti con cognome uguale a " Rossi " oppure a " rossi " senza l ’ esclusione di nessuno dei due .
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 37