2013-04-19 2 views
4

У меня есть два экземпляра базы данных SQL Server (одна и та же версия) на двух компьютерах. Корректировка базы данных установлена ​​на без учета регистра. У меня есть, например: 3 записи в таблице, которые имеют столбец name.SQL Server: Неоднозначный порядок сортировки, когда сортировка нечувствительна к регистру

экземпляра SQL Server 1

> select name from table1 order by name 

name 
----- 
Adam 
adam 
Adam 

экземпляра SQL Server 2

> select name from table1 order by name 

name 
----- 
Adam 
Adam 
adam 

Почему сортировка неоднозначна на двух instaces одной базы данных SQL Server? Почему это? Каков алгоритм сортировки?

ответ

4

Если сортировка нечувствительна к регистру, то все три значения явно считаются идентичными & нет гарантии относительно порядка идентичных упорядоченных строк; не может быть так, как не на что основано это решение, нет «естественного» порядка.

Наблюдаемый порядок следует считать случайным и относится к внутренним серверам, например, какие данные доступны в кэшах чтения/буфера, очереди ввода-вывода и т. Д.

+0

Дополнительный ответ, в конце концов, чтобы избежать разного порядка сортировки в нескольких экземплярах, он может использовать тай-брейк, который в этом случае может быть функцией ASCII(). Например, «A» и «a» не имеют такого же ASCII-кода, и эта функция будет полезна – veljasije

+3

Или, если это имеет значение, он может просто вставить COLLATE Latin1_General_CS_AS в конец –

+0

Конечно, и +1 от меня :) – veljasije

Смежные вопросы