Я изучаю sqlite из книги, в которой многократно упоминается порядок сортировки и сортировки. Что это значит именно в мире баз данных?
источник
Я изучаю sqlite из книги, в которой многократно упоминается порядок сортировки и сортировки. Что это значит именно в мире баз данных?
В основном, как сортировать и сравнивать строки.
Примеры:
Сравнение:
Сортировка:
Эквивалентность специальных символов
Немного 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-бетикале . Это относится к сравнению на основе двоичного кодирования символов 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.Порядок сортировки. Перфокарты были сопоставлены. Записи плоских файлов сопоставляются. Это не уникально для баз данных.
Это самоочевидно для текста, но для двоичных данных, хранящихся в виде символов, это может быть сложнее.