Создание индекса SQL Server для столбца nvarchar - PullRequest
2 голосов
/ 27 апреля 2010

Когда я запускаю этот оператор SQL:

СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС WordsIndex ON Words (Word ASC);

Я получаю следующее сообщение об исключении:

Оператор CREATE UNIQUE INDEX завершен, поскольку был найден повторяющийся ключ для имени объекта «dbo.Words» и индексного имени «WordsIndex». Значение дубликата ключа (задница). Заявление было прекращено.

Столбец «Слово» имеет тип данных nvarchar (100).

В столбце «Word» есть два элемента, которые SQL Server интерпретирует как одинаковые: «aß» и «ass», что приводит к ошибке индексации.

Почему SQL Server интерпретирует эти два разных слова как одно и то же слово?

Ответы [ 2 ]

4 голосов
/ 27 апреля 2010

Дубликат связан с сопоставлением столбца. Следующий запрос покажет вам используемую сортировку:

Select COLLATION_NAME
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_NAME = 'WordsIndex'
    And COLUMN_NAME = 'Words'

Кроме того, на немецком языке «ß» эквивалентно «ss». Таким образом, если вы используете сопоставление в Западной Европе (например, SQL_Latin1_General_CP1_CI_AS), оно будет знать, что это эквивалентно.

http://en.wikipedia.org/wiki/%C3%9F

0 голосов
/ 27 апреля 2010

Используется сортировка по умолчанию (в которой эти слова равны).

Вам необходимо явно указать параметры сортировки, которые вы хотите использовать для этого столбца, в определении таблицы столбца.

См. ALTER TABLE

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