Відповіді:
В основному, як сортувати і порівнювати рядки.
Приклади:
Порівняння:
Сортування:
Спеціальна еквівалентність символів
Деякі 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
"Збірка", ймовірно, найкраще визначена на etymology.com,
кінець 14в., "акт зближення та порівняння"
Це майже не змінилося за останні 600 років. "порівнювати" означає "зібрати разом", і чи це впорядкування книги, хронологічно чи іншим чином у базі даних, все одно.
Що стосується інформатики, то, що ми робимо, це відділення механізму зберігання даних від замовлення . Можливо, ви чули про ASCII-betical . Це стосується порівняння на основі двійкового кодування ASCII символів. У цій системі зберігання та порівняння - це одне і те ж. Якщо стандартизоване ASCII "кодування" колись змінило " порядок " (порядок), також зміниться.
POSIX почав ламати це з LC_COLLATE
. Але коли ми переходимо в Unicode, консорціум з'явився і для стандартизації порівнянь: ICU.
У специфікації SQL є два розширення для забезпечення порівнянь,
F690
: «Підтримка збірки:
Включає в себе collation name
, collation clause
, collation definition
і drop collation
.
F692
: Розширена підтримка порівняння,
Включає в себе додавання іншого зіставлення за замовчуванням до стовпця в схемі.
По суті, вони забезпечують можливість CREATE
і DROP
порівняння, вказувати їх для операторів і сортування, а також визначати за замовчуванням стовпців.
Для отримання додаткової інформації про те, що може запропонувати перевірити SQL,
Замість того, щоб вставляти обмежений приклад, ось тест-пакет PostgreSQL він досить великий. Ознайомтеся хоча б з першим посиланням і шукайте'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Можливо, не варто перевіряти, але я розмістив його тут для повноти, нудних чеків POSIX.