sql >> Databasteknik >  >> RDS >> Mysql

MYSQL skiftlägeskänslig sökning efter utf8_bin-fält

En sträng i MySQL har en teckenuppsättning och en sortering . Utf8 är teckenuppsättningen och utf8_bin är en av dess sammanställningar. För att jämföra din sträng literal med en utf8-kolumn, konvertera den till utf8 genom att prefixa den med _charset-notationen:

_utf8 'Something'

Nu är en sortering endast giltig för vissa teckenuppsättningar. Det skiftlägeskänsliga sortering för utf8 verkar vara utf8_bin, vilket du kan specificera som:

_utf8 'Something' collate utf8_bin

Med dessa konverteringar bör frågan fungera:

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

Prefixet _charset fungerar med strängliterals. För att ändra teckenuppsättningen för ett fält finns KONVERTERA ... ANVÄNDA. Detta är användbart när du vill konvertera fältet pageTitle till en annan teckenuppsättning, som i:

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

För att se tecknet och sorteringen för en kolumn som heter 'col' i en tabell som heter 'TAB', försök:

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

En lista över alla teckenuppsättningar och sorteringar kan hittas med:

show character set
show collation

Och alla giltiga sorteringar för utf8 kan hittas med:

show collation where charset = 'utf8'


  1. Ändra databasanslutningen dynamiskt i cakephp 3

  2. ExecuteReader kräver en öppen och tillgänglig anslutning. Anslutningens nuvarande tillstånd är Ansluter

  3. Automatisk återställning om COMMIT TRANSACTION inte uppnås

  4. PHP med MySQL 8.0+-fel:Servern begärde autentiseringsmetod okänd för klienten