如果sql server的服务器排序规则区分大小写并且数据库不区分大小写,那么查询是否区分大小写?

时间:2009-07-20 15:13:56

标签: sql-server collation

如果sql server的服务器排序规则区分大小写并且数据库不区分大小写,那么查询是否区分大小写?我认为它应该基于数据库而不是服务器整理,但是做了一个似乎不是这样的简短测试。有人知道吗?

2 个答案:

答案 0 :(得分:5)

嗯,我想this解释了它:

  

标识符的排序规则取决于标识符的定级级别。实例级对象的标识符(例如登录名和数据库名)将分配实例的默认排序规则。数据库中对象的标识符(例如表,视图和列名称)将分配数据库的默认排序规则。当连接上下文与一个数据库关联,然后在将上下文切换到另一个数据库时引用,可以创建变量,GOTO标签,临时存储过程和临时表。因此,变量,GOTO标签和临时表的标识符都是实例的默认排序规则。

这意味着即使在不区分大小写的排序规则中,变量(可能包括参数)也区分大小写。这就是我在测试中看到的:参数情况的问题,但表/列名称没有问题。

答案 1 :(得分:0)

可以指定排序规则的各种级别 - 也可以在列级别设置,这将是优先级。通常,列的排序规则设置为使用数据库默认值,除非在创建数据库时显式指定,否则默认使用服务器的排序规则。

请注意,如果使用一个排序规则创建数据库,然后更改数据库的排序规则,则不会影响已使用其他排序规则定义的现有列。它只对从该点为该数据库创建的列生效。所以你需要改变现有的列。

你做了什么测试?