Estoy aprendiendo sqlite de un libro que ha mencionado la clasificación y la secuencia de clasificación varias veces. ¿Qué significa exactamente en el mundo de la base de datos?
fuente
Estoy aprendiendo sqlite de un libro que ha mencionado la clasificación y la secuencia de clasificación varias veces. ¿Qué significa exactamente en el mundo de la base de datos?
Básicamente, cómo ordenar y comparar cadenas.
Ejemplos:
Comparando:
Clasificación:
Equivalencia de caracteres especiales
Algunos 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
"Colación" probablemente se define mejor en etymology.com,
finales de 14c., "acto de reunir y comparar"
No ha cambiado en absoluto en los últimos 600 años. "cotejar" significa "reunir" y si se trata de ordenar un libro, cronológicamente o de otra manera en una base de datos, es lo mismo.
Como se aplica a la informática, lo que estamos haciendo es separar el mecanismo de almacenamiento del pedido . Es posible que haya oído hablar de ASCII-betical . Eso se refiere a una comparación basada en la codificación binaria de caracteres ASCII. En ese sistema, almacenamiento y colación son dos en lo mismo. Si la "codificación" estandarizada por ASCII alguna vez cambiara, la "colación" (orden) también cambiaría.
POSIX comenzó a romper eso con LC_COLLATE
. Pero a medida que avanzamos en Unicode, surgió un consorcio para estandarizar también las intercalaciones: UCI.
En la especificación de SQL hay dos extensiones para proporcionar intercalaciones,
F690
: "Compatibilidad de colación:
Incluye collation name
, collation clause
, collation definition
y drop collation
.
F692
: Soporte de colación extendido,
Incluye adjuntar una clasificación predeterminada diferente a una columna en el esquema.
Esencialmente, proporcionan la capacidad CREATE
y las DROP
intercalaciones, para especificarlas para operadores y géneros, y para definir un valor predeterminado para las columnas.
Para obtener más información sobre lo que SQL tiene para ofrecer, consulte
En lugar de pegar un ejemplo limitado, aquí está el conjunto de pruebas PostgreSQL que es bastante extenso. Mira al menos el primer enlace y busca'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Probablemente no valga la pena echarle un vistazo, pero lo coloqué aquí para completar, aburridos controles POSIX.Orden de clasificación. Las tarjetas perforadas se cotejaron. Los registros de archivos planos se clasifican. Esto no es exclusivo de las bases de datos.
Se explica por sí solo para el texto, pero para los datos binarios almacenados como caracteres puede ser más complicado.