如何定义SQL Server列名称不区分大小写但值区分大小写

时间:2015-04-22 09:17:09

标签: sql-server collation

我们刚刚将一些数据库迁移到新的SQL Server 2012,并且在敏感度方面遇到了一些问题。

我们想要桌子和桌子列名称不区分大小写,但值应区分大小写,所以

select ... where 'a'='A'

不应返回任何行,但

select Column from Table
select column from table

应该都有效。

我们尝试更改数据库(服务器默认值) 我们不想成为的Modern_Spanish_CI_AS -> 'a'='A' is true Modern_Spanish_CS_AS -> the column/table names must match the defined case

有没有办法达到预期的行为?

1 个答案:

答案 0 :(得分:3)

如果选择区分大小写的排序规则,则必须确保您的查询区分大小写,因为排序规则适用于元数据和用户数据。

您可以通过使数据库的排序不区分大小写并在创建表时使用COLLATE子句或者使用包含的数据库来解决问题。

详细了解Contained DatabasesContained Database Collations