sql >> Database >  >> RDS >> Mysql

Hoe MySQL hoofdletterongevoelig en accentongevoelig werkt in UTF-8

Je hebt al geprobeerd een accentongevoelige sortering te gebruiken voor je zoekopdracht en bestelling.

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

Het punt is, je NAME kolom lijkt te zijn opgeslagen in de latin1 (8-bits) tekenset. Daarom moppert mySQL zo tegen je:

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

Je krijgt misschien de gewenste resultaten als je het probeert

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

Maar wees voorzichtig!

Wanneer u een functie gebruikt (in dit voorbeeld CONVERT) op de kolom in een WHERE-instructie, verslaat u de pogingen van MySQL om uw zoekopdracht met indexen te optimaliseren. Als dit project groot gaat worden (dat wil zeggen, als u veel rijen in uw tabellen zult hebben), moet u uw gegevens opslaan in utf8-indeling, niet in latin1. (Je weet waarschijnlijk al dat je LIKE '%whatever%' zoekterm verslaat ook de indexering van MySQL.)



  1. Hulp bij een MySql-query - De rijen met het groepsgewijze maximum van een bepaalde kolom

  2. Query-optimalisatie in PostgreSQL. UITLEG Basis - Deel 3

  3. Controleer uw sessie-instellingen met SESSIONPROPERTY() in SQL Server

  4. onbekende database in jdbc