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

MYSQL følsom søgning efter utf8_bin felt

En streng i MySQL har et tegnsæt og en sortering . Utf8 er tegnsættet, og utf8_bin er en af ​​dets samlinger. For at sammenligne din streng literal med en utf8-kolonne, konverter den til utf8 ved at sætte den foran med _charset-notationen:

_utf8 'Something'

Nu er en sortering kun gyldig for nogle tegnsæt. Det følsomme for store og små bogstaver kollation for utf8 ser ud til at være utf8_bin, som du kan angive som:

_utf8 'Something' collate utf8_bin

Med disse konverteringer burde forespørgslen virke:

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

_charset-præfikset fungerer med strenge bogstaver. For at ændre tegnsættet i et felt er der KONVERTER ... BRUGER. Dette er nyttigt, når du vil konvertere sideTitel-feltet til et andet tegnsæt, som i:

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

For at se tegnet og sorteringen for en kolonne med navnet 'col' i en tabel kaldet 'TAB', prøv:

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

En liste over alle tegnsæt og sorteringer kan findes med:

show character set
show collation

Og alle gyldige sorteringer for utf8 kan findes med:

show collation where charset = 'utf8'


  1. Den parameteriserede forespørgsel forventer den parameter, der ikke blev leveret

  2. Overheaden ved #temp-tabeloprettelsessporing

  3. Hvordan giver man Trigger-genereret værdi til Hibernate ValueObject?

  4. FEJL:Relationssteder findes ikke Heroku db import