3

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

4

2 回答 2

5

好吧,我想解释了它:

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

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

于 2009-07-20T15:21:38.653 回答
0

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

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

你做过什么测试?

于 2009-07-20T15:20:46.097 回答