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

Hvad betyder tegnsæt og sortering præcist?

Fra MySQL docs :

Et tegnsæt er et sæt symboler og kodninger. En sammenstilling er et sæt regler for sammenligning af tegn i et tegnsæt. Lad os gøre forskellen klar med et eksempel på et imaginært tegnsæt.

Antag, at vi har et alfabet med fire bogstaver:'A', 'B', 'a', 'b'. Vi giver hvert bogstav et tal:'A' =0, 'B' =1, 'a' =2, 'b' =3. Bogstavet 'A' er et symbol, tallet 0 er kodningen for 'A', og kombinationen af ​​alle fire bogstaver og deres indkodninger er et tegnsæt.

Antag nu, at vi vil sammenligne to strengværdier, 'A' og 'B'. Den enkleste måde at gøre dette på er at se på kodningerne:0 for 'A' og 1 for 'B'. Fordi 0 er mindre end 1, siger vi, at 'A' er mindre end 'B'. Det, vi lige har gjort, er at anvende en sortering på vores tegnsæt. Samlingen er et sæt regler (kun én regel i dette tilfælde):"sammenlign kodningerne." Vi kalder dette den enkleste af alle mulige sorteringer for abinær sortering.

Men hvad hvis vi vil sige, at de små og store bogstaver er ens? Så ville vi have mindst to regler:(1) behandl de små bogstaver 'a' og 'b' som svarende til 'A' og 'B'; (2) sammenlign derefter kodningerne. Vi kalder dette acase-ufølsom sammenstilling. Det er lidt mere komplekst end en binær sammenstilling.

I det virkelige liv har de fleste tegnsæt mange tegn:ikke kun 'A' og 'B', men hele alfabeter, nogle gange flere alfabeter eller østlige skriftsystemer med tusindvis af tegn, sammen med mange specielle symboler og tegnsætningstegn. Også i det virkelige liv har de fleste sammenstillinger mange regler:ikke kun ufølsomhed for store og små bogstaver, men også accentufølsomhed (en "accent" er et mærke knyttet til et tegn som på tysk 'ö') og flertegns-tilknytninger (såsom reglen om, at 'ö' ='OE' ' i en af ​​de to tyske sammenstillinger).



  1. Sådan rettes "Serveren er ikke konfigureret til RPC" Msg 7411 ved hjælp af T-SQL

  2. SELECT max(x) returnerer null; hvordan får jeg det til at returnere 0?

  3. AOL/J Setup Test suite

  4. SQL-opdatering af felter i en tabel fra felter i en anden