Сортировка с учетом локали на сервере SQL - PullRequest
2 голосов
/ 15 октября 2011

Моя основная проблема заключается в том, что у меня есть пользователи с разными локалями, использующие базу данных, и я хочу, чтобы они сортировали элементы в их родном порядке.

Насколько я понимаю, это работает следующим образом:

Когда я создаю базу данных, мне нужно решить:

  • Кодировка символов (ISO, Unicode, кодовая страница и т. Д.):
    Это ограничивает количество символов, которые можно поместить в базу данных

  • Физическое хранилище (двоичное, UTF-8, порядковый номер UCS16 и т. Д.):
    Это то, что я доверяю базе данных, чтобы заботиться о

  • Равенствосравнение:
    Это необходимо, чтобы уникальные ограничения и т. д. работали согласованно в базе данных.Обычно мне нужно только определить нечувствительность к регистру ("a" = "A") и акценты (è = e). Будет ли здесь иметь значение локаль?

Все эти вещи (+ порядок сортировки по умолчанию) устанавливаются путем указания параметров сортировки для каждого поля (где значение по умолчанию берется из базы данных, котораяполучает значение по умолчанию из экземпляра)

Когда соединение установлено с базой данных, языковой параметр входа в систему определяет, как отображаются даты и числа и т. д.

Здесь возникают проблемы. Почему порядок сортировки не зависит от локали соединения? Я могу понять, что сравнение на равенство должно соответствовать спецификации поля, но порядок сортировки?

Я знаю, что могу сделать ORDER BY [Name] COLLATE somecollation но есть несколько проблем с этим:

  1. Легко забыть
  2. SQL часто генерируется инструментом / фреймворком
  3. Откуда я знаю, чтосличение указать?

Как вы обычно справляетесь с этим?Сортировка на стороне клиента?

1 Ответ

0 голосов
/ 13 декабря 2013

сопоставление базы данных сообщает SQL Server, как обрабатывать символы в соответствии с общими языками.

Будет ли здесь иметь значение локаль ("a" = "A") и акценты (è = e) Это зависит от настроек сопоставления.("a" = "A") будет рассматриваться как один и тот же, если ваше сопоставление нечувствительно к регистру (CI).(è = e) будет рассматриваться как одно и то же, если ваша сортировка была нечувствительной к акценту (ai)

Почему порядок сортировки не зависит от локали соединения? Поскольку SQL Server имеетчтобы как-то сортировать данные внутри, и нужно какое-то руководство, как это сделать (сопоставление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...