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?
la source
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?
Fondamentalement, comment trier et comparer des chaînes.
Exemples:
Comparant:
Tri:
Équivalence de caractères spéciaux
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
"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.
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.
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 definition
et 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é CREATE
et les DROP
classements, 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:
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"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Probablement pas la peine de vérifier, mais je l'ai placé ici pour être complet, ennuyeux les contrôles POSIX.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.