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

MySQL-sortering til at gemme flersprogede data på ukendt sprog

Du bør bruge en Unicode-sortering. Du kan indstille det som standard på dit system eller på hvert felt i dine tabeller. Der er følgende Unicode-sorteringsnavne, og dette er deres forskelle:

utf8_general_ci er en meget simpel sammenstilling. Det fjerner bare alle accenter - konverterer derefter til store bogstaver og bruger koden for denne slags "grundbogstav" resultatbogstav til at sammenligne.

utf8_unicode_ci bruger standard Unicode-sorteringselementtabellen.

De vigtigste forskelle er:

  1. utf8_unicode_ci understøtter såkaldte udvidelser og ligaturer, for eksempel:Tysk bogstav ß (U+00DF LETTER SHARP S) er sorteret i nærheden af ​​"ss" Bogstav Œ (U+0152 LATIN CAPITAL LIGATURE OE) er sorteret i nærheden af ​​"OE".

utf8_general_ci understøtter ikke udvidelser/ligaturer, den sorterer alle disse bogstaver som enkelte tegn, og nogle gange i den forkerte rækkefølge.

  1. utf8_unicode_ci er generelt mere præcis for alle scripts. For eksempel på kyrillisk blok:utf8_unicode_ci er fint til alle disse sprog:russisk, bulgarsk, hviderussisk, makedonsk, serbisk og ukrainsk. Mens utf8_general_ci kun er fint til russisk og bulgarsk undergruppe af kyrillisk. Ekstra bogstaver brugt på hviderussisk, makedonsk, serbisk og ukrainsk er ikke sorteret godt.

+/- Ulempen ved utf8_unicode_ci er, at den er en lille smule langsommere end utf8_general_ci.

Så afhængigt af, om du ved eller ej, hvilke specifikke sprog/tegn du vil bruge, anbefaler jeg, at du bruger utf8_unicode_ci, som har en mere omfattende dækning.



  1. Sådan fungerer Abs() i PostgreSQL

  2. Skift dynamisk databaseforbindelse i cakephp 3

  3. Hvordan kan jeg bruge now() i Doctrine 2 DQL?

  4. SQL Server FOR XML Path laver gentagne noder