我讨厌数据库的大小写敏感性,但是我正在为一个使用它的客户开发。我该如何在我的SQL Server上启用此选项,以便我可以确保在所有查询中都正确使用了大小写?
我讨厌数据库的大小写敏感性,但是我正在为一个使用它的客户开发。我该如何在我的SQL Server上启用此选项,以便我可以确保在所有查询中都正确使用了大小写?
如果只需要区分大小写的话,您实际上并不需要更改整个数据库的排序规则。可以在需要区分大小写的表或列上声明排序规则。事实上,您甚至可以根据需要将其附加到单个操作中。
SELECT name WHERE 'greg' = name COLLATE Latin1_GENERAL_CS_AS
我知道,您说希望在整个数据库中应用这个设置。但我提到这点是因为在某些托管环境下,您无法控制此属性,该属性是在创建数据库时设置的。
ALTER DATABASE database_name COLLATE collation_name
如果您的数据库与实例默认排序规则不同,那么在尝试将表与临时表连接时可能会遇到问题。 临时表必须具有实例的排序规则(因为它们是系统对象),因此您需要在连接中使用COLLATE database_default子句。
select temp.A, table.B
from #TEMPORARY_TABLE temp inner join table
on temp.X COLLATE database_default = table.Y
这将强制 temp.X(在此示例中)的排序规则与当前数据库的排序规则相同。
您需要更改数据库排序规则。您还需要修改表和列级别的排序规则。如果您在谷歌上搜索,我相信您可以找到一个相关的脚本。