繁体   English   中英

在nvarchar列上创建SQL Server索引

[英]Creating SQL Server index on a nvarchar column

当我运行此SQL语句时:

在单词上创建唯一索引WordsIndex(Word ASC);

我收到以下异常消息:

CREATE UNIQUE INDEX语句终止,因为找到了对象名称“ dbo.Words”和索引名称“ WordsIndex”的重复键。 重复的键值为(ass)。 该语句已终止。

“字”列的数据类型为nvarchar(100)。

SQL Server将“ Word”列中的两个项目解释为相同的项目:“aß”和“ ass”,这会导致索引失败。

为什么SQL Server会将这两个不同的单词解释为同一单词?

重复是由于该列的排序规则。 以下查询将告诉您所使用的排序规则:

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

它使用的是默认排序规则(在这些排序规则中,这些单词等同)。

您需要在列的表定义中明确限定要在该列上使用的归类。

ALTER TABLE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM