Que signifie «collation»?

15

J'apprends sqlite à partir d'un livre qui a mentionné le classement et la séquence de classement plusieurs fois. Qu'est-ce que cela signifie exactement dans le monde des bases de données?

mumtaz
la source

Réponses:

15

Fondamentalement, comment trier et comparer des chaînes.

Exemples:

Comparant:

  • Accent: à vs ä vs a
  • Cas: A vs a

Tri:

  • Suédois: z -> å -> ä -> ö
  • Danois: z -> æ -> ø -> å

Équivalence de caractères spéciaux

  • Allemand ß = ss

Wikipédia

Certains SQL (SQL Server 2008+)

DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')

SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS
gbn
la source
1

Étymologie

"Collation" est probablement mieux défini sur etymology.com,

fin 14c., "acte de rapprochement et de comparaison"

Cela n'a pas changé du tout au cours des 600 dernières années. "assembler" signifie "rassembler" et que ce soit la commande d'un livre, chronologiquement ou non dans une base de données, c'est la même chose.

L'informatique

En ce qui concerne l'informatique, ce que nous faisons, c'est séparer le mécanisme de stockage de la commande . Vous avez peut-être entendu parler de ASCII-betical . Cela fait référence à une comparaison basée sur le codage binaire des caractères ASCII. Dans ce système, le stockage et le classement sont deux dans le même. Si le "codage" normalisé ASCII changeait jamais, le "classement" (ordre) changerait aussi.

POSIX a commencé à rompre avec LC_COLLATE. Mais à mesure que nous entrons dans Unicode, un consortium a émergé pour normaliser également les classements: ICU.

SQL

Dans la spécification SQL, il existe deux extensions pour fournir des classements,

  • F690: «Prise en charge du classement:

    Comprend collation name, collation clause, , collation definitionet drop collation.

  • F692: Prise en charge du classement étendu,

    Comprend l'attachement d'un classement par défaut différent à une colonne du schéma.

Essentiellement, ceux-ci offrent la possibilité CREATEet les DROPclassements, de les spécifier pour les opérateurs et les tris, et de définir une valeur par défaut pour les colonnes.

Pour plus d'informations sur ce que SQL a à offrir, consultez:

Exemples

Plutôt que de coller un exemple limité, voici la suite de tests PostgreSQL, elle est assez étendue. Consultez au moins le premier lien et recherchez'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"

Evan Carroll
la source
-2

Ordre de tri. Les cartes perforées ont été rassemblées. Les enregistrements de fichiers plats sont rassemblés. Ce n'est pas unique aux bases de données.

Il est explicite pour le texte, mais pour les données binaires stockées sous forme de caractères, cela peut être plus délicat.

mckenzm
la source