sql >> Database teknologi >  >> RDS >> Oracle

Jeg forstår ikke Collation? (Mysql, RDBMS, tegnsæt)

Hovedpunktet i en databasesortering er at bestemme, hvordan data sorteres og sammenlignes.

Stor og store og små bogstaver i strengsammenligninger

SELECT "New York" = "NEW YORK";` 

vil returnere true for en versal ufølsom sortering; false for en case-sensitiv.

Hvilken sortering gør hvad kan fortælles af _ci og _cs suffiks i samlingens navn. _bin kollationer gør binære sammenligninger (strenge skal være 100 % identiske).

Sammenligning af omlyd/accenttegn

sorteringen afgør også, om tegn med accent behandles som deres latinske basismodstykker i strengsammenligninger.

SELECT "Düsseldorf" =  "Dusseldorf";
SELECT "Èclair" =      "Eclair";

vil returnere sandt i førstnævnte tilfælde; falsk i sidstnævnte. Du skal læse beskrivelsen af ​​hver sortering for at finde ud af, hvilken der er hvilken.

Strengesortering

Sorteringen påvirker den måde, strenge sorteres på.

For eksempel

  • Omlyd Ä Ö Ü er i slutningen af ​​alfabetet i det finske/svenske alfabet latin1_swedish_ci

  • de behandles som A O U på tysk DIN-1 sortering (latin_german1_ci )

  • og som AE OE UE på tysk DIN-2 sortering (latin_german2_ci ). ("telefonbogssortering")

  • I latin1_spanish_ci , "ñ" (n-tilde) er et separat bogstav mellem "n" og "o".

Disse regler vil resultere i forskellige sorteringsrækkefølger, når der bruges ikke-latinske tegn.

Brug af sorteringer under kørsel

Du skal vælge en sortering for din tabel og dine kolonner, men hvis du ikke har noget imod præstationshittet, kan du tvinge databaseoperationer ind i en bestemt sortering under kørsel ved hjælp af COLLATE søgeord.

Dette vil sortere table ved name kolonne ved hjælp af tyske DIN-2 sorteringsregler:

SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;

Bruger COLLATE ved runtime vil have præstationsimplikationer, da hver kolonne skal konverteres under forespørgslen. Så tænk dig om to gange, før du anvender dette, gør store datasæt.

MySQL-reference:

  • Tegnsæt og sorteringer, som MySQL understøtter
  • Eksempler på effekten af ​​sortering
  • Sorteringsproblemer


  1. Sådan fungerer DAYOFMONTH() i MariaDB

  2. postgres standardtidszone

  3. Sådan installeres phpMyAdmin på administrerede hostingkonti

  4. Hvordan bruger man parametre i en 'where value in...'-sætning?