2010-04-27 54 views
2

當我運行該SQL語句:一個nvarchar列創建的SQL Server索引

CREATE UNIQUE INDEX ON WordsIndex詞(字ASC);

我得到以下異常消息:

的CREATE終止,因爲重複的鍵被發現的對象名稱「dbo.Words」和索引名稱UNIQUE INDEX語句「WordsIndex」。重複的鍵值是(ass)。 該聲明已被終止。

'Word'列的數據類型爲nvarchar(100)。

SQL Server解釋爲'aß'和'ass',導致索引失敗,'Word'列中有兩個項目解釋爲相同。

爲什麼SQL Server會將這兩個不同的單詞解釋爲同一個單詞?

+1

聽起來像是一個功課問題? – keith 2010-04-27 02:25:06

回答

4

重複的是由於列的排序規則。以下查詢會告訴您正在使用的排序規則:

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

它使用默認排序規則(其中這些詞相同)。

您需要在列的表定義中明確限定要在該列上使用的排序規則。

參見ALTER TABLE