Mysql
 sql >> Database >  >> RDS >> Mysql

Ricerca con distinzione tra maiuscole e minuscole in MySQL per il campo utf8_bin

Una stringa in MySQL ha un set di caratteri e un confronto . Utf8 è il set di caratteri e utf8_bin è una delle sue regole di confronto. Per confrontare la tua stringa letterale con una colonna utf8, convertila in utf8 anteponendola alla notazione _charset:

_utf8 'Something'

Ora un confronto è valido solo per alcuni set di caratteri. Il case-sensibile confronto per utf8 sembra essere utf8_bin, che puoi specificare come:

_utf8 'Something' collate utf8_bin

Con queste conversioni, la query dovrebbe funzionare:

select * from page where pageTitle = _utf8 'Something' collate utf8_bin

Il prefisso _charset funziona con le stringhe letterali. Per modificare il set di caratteri di un campo, c'è CONVERT ... USING. Questo è utile quando desideri convertire il campo pageTitle in un altro set di caratteri, come in:

select * from page 
where convert(pageTitle using latin1) collate latin1_general_cs = 'Something'

Per vedere il carattere e le regole di confronto per una colonna denominata 'col' in una tabella denominata 'TAB', prova:

select distinct collation(col), charset(col) from TAB

È possibile trovare un elenco di tutti i set di caratteri e le regole di confronto con:

show character set
show collation

E tutte le regole di confronto valide per utf8 possono essere trovate con:

show collation where charset = 'utf8'