如何定义 SQL 服务器列名称不区分大小写但值区分大小写
How to define SQL Server colum name case insensitive but values case sensitive
我们刚刚将一些数据库迁移到新的 SQL Server 2012,但遇到了一些敏感问题。
我们希望 table 和列名称不区分大小写,但值应该区分大小写,因此
select ... where 'a'='A'
不应该 return 任何行,但是
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
有什么方法可以得到想要的行为吗?
如果您选择区分大小写的排序规则,则必须确保您的查询区分大小写,因为排序规则适用于元数据和用户数据。
您可以通过使数据库的排序规则不区分大小写并在创建表时使用 COLLATE 子句来解决这个问题,或者使用包含的数据库。
阅读更多关于 Contained Databases and Contained Database Collations
我们刚刚将一些数据库迁移到新的 SQL Server 2012,但遇到了一些敏感问题。
我们希望 table 和列名称不区分大小写,但值应该区分大小写,因此
select ... where 'a'='A'
不应该 return 任何行,但是
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
有什么方法可以得到想要的行为吗?
如果您选择区分大小写的排序规则,则必须确保您的查询区分大小写,因为排序规则适用于元数据和用户数据。
您可以通过使数据库的排序规则不区分大小写并在创建表时使用 COLLATE 子句来解决这个问题,或者使用包含的数据库。
阅读更多关于 Contained Databases and Contained Database Collations