5° Anno TEORIA 4. Introduzione al linguaggio SQL | 页面 38

16. Il linguaggio SQL Vers. 11.0 – Gennaio 2026
Immaginiamo di volere effettuare delle QUERY case-sensitive in MySql a prescindere dalla natura delle tabelle in esso contenute, quindi anche in caso di COLLATION case-insensitive
Le query che prevedono le condizioni WHERE o LIKE senza gli opportuni accorgimenti eseguono un confronto case insensitive, ovvero non fanno alcuna distinzione tra maiuscole e minuscole.
Ribadiamo che ciò avviene in base alle impostazioni previste di default da MySql quando si crea una nuova tabella riguardanti CHARACTER SET e COLLATE che vengono impostati in modo da non differenziare maiuscole e minuscole.
Eppure, in alcuni ambiti le lettere maiuscole e minuscole possono essere molto importanti: pensiamo, ad esempio, al caso in cui desidera tenerne conto di ciò nella procedura di verifica password in un sistema di login( a cui però non è stato applicato un hash come md5 o sha1).
Inoltre, in tali casi il confronto equipara anche le lettere con accenti diversi tale per cui ' e ', ' è ' ed ' é ' sono indistinte.
La soluzione a tale problematica da un punto di vista pratico è semplicissima. Basterà usare all ' interno delle nostre query la funzione BINARY.
La funzione BINARY
Questa funzione consente di eseguire un confronto fra stringhe non in base ai caratteri ma byte per byte, ovvero un confronto della codifica binaria. Occorre ulteriormente precisare che tale funzione tiene conto anche di eventuali spazi vuoti e qundi una stringa ' a ' sarà diversa da ' a '.
SELECT * FROM < Tabella > WHERE BINARY(< Nome _ Colonna >) = '< valore _ Colonna >';
N. B. Le parentesi tonde alla funzione BINARY posso essere omesse
IN CONCLUSIONE
Tutto ciò solitamente avviene in quanto il confronto riguarda campi in formato testuale( CHAR, VARCHAR e TEXT) in cui si è scelto l ' impostazione di default per lo CHARACTER SET e la COLLATION che sono rispettivamente latin1 e latin1 _ swedish _ ci( comunque sarebbe meglio utilizzare la collation utf8)
Quindi, quando ci si trova in fase di creazione di una tabella, occorrerebbe tener conto anche di come si desidera poi effettuare i confronti.
Nella scelta fra i diversi tipi di COLLATION occorre porre attenzione ai suffissi quali ci, cs e bin i quali stanno appunto a significare rispettivamente case insensitive, case sensitive ed binary.
Esistono, in pratica, set di caratteri più " precisi " rispetto ad altri che invece equiparano tra loro maiuscole, minuscole ed accentate senza fare alcuna differenza
Bisogna fare molta attenzione in quanto scegliere uno CHARACTER SET e COLLATION più preciso determina un maggiore spazio occupato nel database e, di conseguenza, query che richiedono confronti più lente.
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 38