数据库在唯一约束中区分大小写,但在select中不区分大小写

时间:2013-05-16 18:11:24

标签: sql-server collation case-sensitive

我有一个SQL Server 2008 R2 Express,在安装向导中我选择了排序规则Modern_Spanish_CS_AS

如果我转到数据库的属性,当我创建一个新数据库时,我可以看到整理是正确的,CS_AS

但是,当我执行select时不区分大小写,如果我创建了一个唯一约束,我不能插入例如这个字符串:user01User01,因为实际上数据库不区分大小写。

为什么服务器,数据库和表区分大小写,选择和约束不是?在实践中,不区分大小写。

我该如何解决这个问题?我希望所有数据库都区分大小写。

感谢。

1 个答案:

答案 0 :(得分:1)

我会看一下这篇论坛帖子,并验证您的唯一约束中的字段是否真正区分大小写:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6de23802-eb3b-4759-9d4d-a796c69e6271

您可以查询字段的排序规则(如果表创建为不区分大小写的话):

select      name, collation_name
from        sys.columns
where       object_id in (select object_id from sys.objects where name = '<table name>') and name = '<field name>'

如果这不能解决问题,请回复,我可以添加一些测试。