sql >> Database >  >> RDS >> Mysql

Wat betekent tekenset en sortering precies?

Van MySQL docs :

Een tekenset is een set symbolen en coderingen. Een verzameling is een set regels voor het vergelijken van karakters in een karakterset. Laten we het onderscheid duidelijk maken met een voorbeeld van een denkbeeldige tekenset.

Stel dat we een alfabet hebben met vier letters:'A', 'B', 'a', 'b'. Geef elke letter een nummer:'A' =0, 'B' =1, 'a' =2, 'b' =3. De letter 'A' is een symbool, het cijfer 0 is de codering voor 'A', en de combinatie van alle vier de letters en hun coderingen is een tekenset.

Stel nu dat we twee tekenreekswaarden, 'A' en 'B', willen vergelijken. De eenvoudigste manier om dit te doen is door naar de coderingen te kijken:0 voor 'A' en 1 voor 'B'. Omdat 0 kleiner is dan 1, zeggen we dat 'A' kleiner is dan 'B'. Wat we zojuist hebben gedaan, is een sortering toepassen op onze tekenset. De sortering is een reeks regels (slechts één regel in dit geval):"vergelijk de coderingen." We noemen dit de eenvoudigste van alle mogelijke sorteringen abbinaire sortering.

Maar wat als we willen zeggen dat kleine letters en hoofdletters gelijkwaardig zijn? Dan zouden we tenminste twee regels hebben:(1) behandel de kleine letters 'a' en 'b' als gelijkwaardig aan 'A' en 'B'; (2) vergelijk vervolgens de coderingen. We noemen dit acase-ongevoelige sortering. Het is iets ingewikkelder dan een binaire verzameling.

In het echte leven hebben de meeste tekensets veel tekens:niet alleen 'A' en 'B' maar hele alfabetten, soms meerdere alfabetten of oosterse schrijfsystemen met duizenden tekens, samen met veel speciale symbolen en leestekens. Ook in het echte leven hebben de meeste sorteringen veel regels:niet alleen hoofdletterongevoeligheid, maar ook accentongevoeligheid (een "accent" is een teken dat aan een teken is gehecht als in het Duits 'ö') en meerdere tekens (zoals de regel dat 'ö' ='OE ' in een van de twee Duitse collations).



  1. Hoe u de datum van gisteren in T-SQL kunt krijgen

  2. Transponeer een set rijen als kolommen in SQL Server 2000

  3. Mysql Converteer kolom naar rij (draaitabel)

  4. Oracle-equivalent van ROWLOCK, UPDLOCK, READPAST queryhints