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

Dee*_*uti 5 sql-server collation

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

我们希望表名和列名不区分大小写,但值应该区分大小写,所以

select ... where 'a'='A'
Run Code Online (Sandbox Code Playgroud)

不应返回任何行,但

select Column from Table
select column from table
Run Code Online (Sandbox Code Playgroud)

都应该工作。

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

有没有办法获得所需的行为?

Ɖia*_*zeƦ 3

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

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

阅读有关包含数据库包含数据库排序规则的更多信息