sql >> Databasteknik >  >> RDS >> Mysql

MySQL-kollation för att lagra flerspråkig data på okänt språk

Du bör använda en Unicode-sortering. Du kan ställa in det som standard på ditt system eller på varje fält i dina tabeller. Det finns följande Unicode-sorteringsnamn, och detta är deras skillnader:

utf8_general_ci är en mycket enkel sammanställning. Den tar bara bort alla accenter - konverterar sedan till versaler och använder koden för den här typen av "basbokstav" resultatbokstav för att jämföra.

utf8_unicode_ci använder standardtabellen för Unicode-sorteringselement.

De huvudsakliga skillnaderna är:

  1. utf8_unicode_ci stöder så kallade expansioner och ligaturer, till exempel:tyska bokstaven ß (U+00DF LETTER SHARP S) är sorterad nära "ss" Bokstaven Œ (U+0152 LATIN CAPITAL LIGATURE OE) är sorterad nära "OE".

utf8_general_ci stöder inte expansioner/ligaturer, den sorterar alla dessa bokstäver som enstaka tecken, och ibland i fel ordning.

  1. utf8_unicode_ci är allmänt mer exakt för alla skript. Till exempel, på kyrilliskt block:utf8_unicode_ci är bra för alla dessa språk:ryska, bulgariska, vitryska, makedonska, serbiska och ukrainska. Medan utf8_general_ci bara är bra för ryska och bulgariska delmängder av kyrilliska. Extra bokstäver som används på vitryska, makedonska, serbiska och ukrainska sorteras inte bra.

+/- Nackdelen med utf8_unicode_ci är att den är lite långsammare än utf8_general_ci.

Så beroende på, om du vet eller inte, vilka specifika språk/tecken du ska använda rekommenderar jag att du använder utf8_unicode_ci som har en mer omfattande täckning.



  1. MySQL går med och COUNT(*) från en annan tabell

  2. Begränsa MySQL-anslutningar från localhost för att förbättra säkerheten

  3. SQLite Connection läckte även om allt stängdes

  4. Formatera SQLite-frågeresultat som en HTML-tabell