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

Sql server 如何定义SQL Server列名称不区分大小写,但值区分大小写,sql-server,collation,Sql Server,Collation,我们刚刚将一些数据库迁移到一个新的SQL Server 2012,但在敏感性方面遇到了一些问题 我们希望表和列名不区分大小写,但是值应该区分大小写,所以 select ... where 'a'='A' 不应返回任何行,但 select Column from Table select column from table 两者都应该起作用 我们尝试将数据库(服务器默认)从 Modern_Spanish_CI_AS->'a'='a'是真的,这是我们不想成为的 Modern\u Spanish\

我们刚刚将一些数据库迁移到一个新的SQL Server 2012,但在敏感性方面遇到了一些问题

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

select ... where 'a'='A'
不应返回任何行,但

select Column from Table
select column from table
两者都应该起作用

我们尝试将数据库(服务器默认)从
Modern_Spanish_CI_AS->'a'='a'是真的
,这是我们不想成为的
Modern\u Spanish\u CS\u AS->列/表名必须与定义的大小写匹配


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

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

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


阅读更多关于和

我是否应该理解create database的COLLATE子句适用于元数据以及用户数据。。。而create表格中列定义的COLLATE子句仅适用于用户数据?是。如果数据库是包含的数据库,则可以避免使用列定义的COLLATE子句-请参阅我对包含的数据库排序规则的回答中的链接,以及此处:about contained databases.Thks。你说得对,在一列上测试了校样。我们将研究哪个选项更容易,对每一列或包含的数据库进行整理。