Query case sensitive in SQL

Chiunque abbia realizzato una query SQL sa che i dati testuali vengono normalmente reperiti senza attenzione alla distinzione tra maiuscole e minuscole nell’applicazione dei filtri. Vediamo come aggirare questa limitazione.

Select tradizionale

Una query tipica per campi di testo è nella forma

SELECT * FROM aziende WHERE nome = "GiBiLogic"

I risultati di questa ricerca includeranno tutti i possibili risultati:

  • … | GiBiLogic | … | … | …
  • … | GIBILOGIC | … | … | …
  • … | gibilogic | … | … | …

Questo può essere un risultato accettabile nella maggior parte dei casi, tuttavia possiamo facilmente immaginare che esistano casi in cui la distinzione è rilevante.

Binary select

Per ottenere quanto desiderato, utilizzare invece la query:

SELECT * FROM aziende WHERE (BINARY nome="GiBiLogic")

In questo modo i risultati saranno solo quelli in cui il nome coincide esattamente.

Campi binary

Per fare in modo che un campo testuale sia sempre trattato in modalità case sensitive, senza dover includere tale parola chiave nella query, dobbiamo modificare la definizione del campo stesso:

ALTER TABLE aziende MODIFY nome varchar (50) BINARY

Una volta resa permanente la caratteristica case-sensitive per detti record la query potrà essere eseguita senza l’utilizzo della parola chiave BINARY:
SELECT * FROM clienti WHERE town=”Milano”;.

sistemista, sql