web-dev-qa-db-fra.com

Que signifie collation?

Que signifie collation dans SQL et que fait-il?

131
LOVE_KING

La collation peut être simplement considérée comme un ordre de tri.

En anglais (et cousin étrange, américain), le classement peut être une tâche assez simple consistant à commander par le code ASCII).

Une fois que vous entrez dans ces étranges langues européennes avec tous leurs accents et autres caractéristiques, la collation change. Par exemple, bien que les différentes formes accentuées de a puissent exister à des points de code différents, il peut être nécessaire de les trier comme s'il s'agissait de la même lettre.

55
paxdiablo

Outre les "lettres accentuées sont triées différemment des lettres non accentuées" dans certaines langues d'Europe occidentale, vous devez tenir compte des groupes de lettres, qui sont parfois triés différemment aussi.

Traditionnellement, en espagnol, "ch" était considéré comme une lettre à part entière, identique à "ll" (les deux représentant un seul phonème), ainsi une liste serait triée comme suit:

  • caballo
  • cinco
  • coche
  • charco
  • chocolat
  • chueco
  • dado
  • (...)
  • lámpara
  • luego
  • llanta
  • lluvia
  • madera

Notez que tous les mots commençant par simple c vont ensemble, sauf les mots commençant par ch qui vont après eux, idem avec ll - mots de départ qui vont après tous les mots commençant par un simple l . Vous retrouverez cet ordre dans les anciens dictionnaires et encyclopédies, parfois même de nos jours par des organisations très conservatrices.

L'Académie royale de la langue a modifié cette méthode pour faciliter l'intégration de l'espagnol dans le monde de l'informatique. Néanmoins, ñ est toujours considéré comme une lettre différente de n et va - après le, et avant o . Donc, ceci est une liste correctement ordonnée:

  • Namibie
  • número
  • ñandú
  • ñú
  • obra
  • ojo

En sélectionnant le bon classement, vous obtenez tout cela automatiquement :-)

41
Joe Pineda

Règles qui expliquent comment comparer et trier les chaînes: ordre des lettres; si le cas importe, si les signes diacritiques, etc.

Par exemple, si vous voulez que toutes les lettres soient différentes (par exemple, si vous stockez les noms de fichiers dans UNIX), vous utilisez UTF8_BIN collation:

SELECT  'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN

---
0

Si vous souhaitez ignorer les différences de casse et de signes diacritiques (par exemple, pour un moteur de recherche), vous utilisez UTF8_GENERAL_CI collation:

SELECT  'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI

---
1

Comme vous pouvez le constater, cette collation (règle de comparaison) considère les majuscules A et les lowecase ä la même lettre, en ignorant les différences de casse et diacritiques.

13
Quassnoi

Le classement définit la manière dont vous triez et comparez les valeurs de chaîne

Par exemple, il définit comment traiter

  • accents (äàa etc)
  • cas (Aa)
  • le contexte linguistique:
    • Dans une collation française, cote < côte < coté < côté.
    • Par défaut, dans SQL Server Latin1, cote < coté < côte < côté
  • Tri ASCII (un classement binaire)
9
gbn

Associer signifie assigner un ordre aux caractères d'un alphabet, par exemple ASCII ou Unicode, etc.).

Supposons que votre alphabet comporte 3 caractères: {A, B, C}. Vous pouvez définir des exemples de classements en affectant des valeurs intégrales aux caractères.

  1. Exemple 1 = {A = 1, B = 2, C = 3}
  2. Exemple 2 = {C = 1, B = 2, A = 3}
  3. Exemple 3 = {B = 1, C = 2, A = 3}

En fait, vous pouvez définir n! des collations sur un alphabet de taille n. Compte tenu de cet ordre, différentes routines de tri, telles que les types de chaînes LSD/MSD, l'utilisent pour trier les chaînes.

5
Murali Mohan

http://en.wikipedia.org/wiki/Collation

La collation est l'assemblage d'informations écrites dans un ordre standard. (...) Un algorithme de classement tel que = algorithme de classement Unicode définit un ordre en comparant deux chaînes de caractères données et en déterminant laquelle doit précéder l’autre.

3
S.Lott

Le classement détermine la façon dont vos données sont triées et comparées. C'est très souvent important en ce qui concerne l'internalisation, par exemple comment trier les kanji japonais?

Si vous collationnement google et serveur SQL, vous trouverez beaucoup d'articles en discuter!

3
Dr G

La référence est tirée de cet article: Un classement est un ensemble de règles permettant de comparer des caractères dans un jeu de caractères. Il a également décidé de trier les caractères et l'ordre approprié de deux caractères varie d'une langue à l'autre. Un classement compare deux chaînes telles que, si un mot est supérieur à un autre, et trie en conséquence.

Si vous utilisez le jeu de caractères "latin1", vous pouvez utiliser le classement "latin1_swedish_ci".

Vous devez choisir le bon classement car un mauvais classement peut affecter les performances de votre base de données.

3
Anvesh

Le classement est comment SQL Server décide comment trier et comparer le texte.

Voir MSDN .

1
Oded