sql >> Databasteknik >  >> RDS >> Mysql

Hur man MySQL arbetar skiftlägesokänslig och accentokänslig i UTF-8

Du har redan försökt använda en accentokänslig sortering för din sökning och beställning.

http://dev.mysql.com/doc /refman/5.0/en/charset-collation-implementations.html

Saken är din NAME kolumnen verkar vara lagrad i teckenuppsättningen latin1 (8-bitars). Det är därför mySQL gnäller mot dig så här:

  COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Du kan få de resultat du vill ha om du försöker

 WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;

Men var försiktig!

När du använder någon form av funktion (i det här exemplet CONVERT) på kolumnen i en WHERE-sats, besegrar du MySQL:s försök att optimera din sökning med index. Om det här projektet kommer att bli stort (det vill säga om du kommer att ha många rader i dina tabeller) måste du lagra dina data i utf8-format, inte latin1. (Du vet förmodligen redan att din LIKE '%whatever%' söktermen besegrar också MySQL:s indexering.)



  1. PLS-00103:Påträffade symbolen CREATE

  2. Mysql-fråga med where och group by-sats

  3. Vad är skillnaden mellan mysql drop-partition och truncate-partition

  4. Hur kan jag dekryptera MySQL-lösenord