venerdì 3 novembre 2017

Come fare query case sensitive con MySql

Oggi ho scoperto l'acqua calda, ovvero che le query su mysql sono case insensitive.
Praticamente, ho salvato nel mio database un bel codice alfanumerico, composto da numeri e cifre maiuscole e minuscole, e quando sono andato a controllare il tutto tramite query, ho scoperto che anche se inserivo il codice tutto in minuscolo, mysql restituiva lo stesso il risultato.

Vediamo dunque come fare query case sensitive in mysql, in modo tale da sfruttare appieno le potenzialità dei codici complessi, come ad esempio quelli usati nelle password e nelle codici d'accesso in generale.


Come fare query case sensitive con MySql


Per poter effettuare delle query mysql che riconoscano che il dato immesso sia una lettera maiuscola o minuscola (case sensitive), occorre utilizzare la seguente sintassi sql:

SELECT * FROM tabella WHERE BINARY nome like '%paroLa%' 

Utilizzando la sintassi mysql binary, andremo a specificare che vogliamo fare una ricerca nella tabella tenendo conto delle maiuscole e delle minuscole.
Nell'esempio citato infatti, verrà cercato esattamente il termine paroLa, con la elle maiuscola, tutti gli altri risultati verranno scartati.

Ecco due immagini che mostrano le mysql query case sensitive all'opera, con o senza binary:

mysql query case insensitive

mysql query case sensitive

Ma se invece volessimo che uno specifico campo mysql sia sempre case sensitive, in modo da non doverlo specificare in ogni query?
Semplice, basta settare BINARY come proprietà del campo.

binary mysql

E con le query case sensitive sul database mysql, direi che è proprio tutto... anche se sì, è vero, ci sarebbe anche il metodo COLLATE, che però non è argomento di questo post (cit.).

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon