【发布时间】:2010-10-11 05:09:15
【问题描述】:
我有一个表(其中包含数据的现有表)并且该表有一个用户名列。 我希望这个用户名是唯一的。 所以我添加了一个这样的约束:
ALTER TABLE Users
ADD CONSTRAINT [IX_UniqueUserUserName] UNIQUE NONCLUSTERED ([UserName])
现在我不断收到此表中存在重复用户的错误。 但我已经使用以下查询检查了数据库:
SELECT COUNT(UserId) as NumberOfUsers, UserName
FROM Users
GROUP BY UserName, UserId
ORDER BY UserName
这会生成一个用户列表,所有用户的 NumberOfUsers 都为 1。所以那里没有重复。 但是当我检查用户名时,他失败了,我看到以下结果:
beluga
béluga
所以显然他没有比较“e”和“é”或“è”......就像他忽略了这些,有什么办法让sql在添加唯一键约束时不忽略这些重音。
解决方案:
感谢你们,我找到了解决方案。 这解决了问题:
ALTER TABLE Users
ALTER COLUMN UserName nvarchar(250) COLLATE SQL_Latin1_General_CP1_CI_AS
【问题讨论】:
-
这似乎是数据库排序规则的问题。它设置为什么排序规则?
标签: sql sql-server constraints diacritics unique-key