SQL Server中区分大小写的变量

11

我有一个带有多个数据库的SQL Server。我希望其中一个数据库对变量名称大小写敏感,而其他数据库则不敏感。

我需要更改设置,以便我可以在没有错误的情况下运行此脚本。

DECLARE @A int
DECLARE @a int

如何将一个数据库的变量名区分大小写,同时允许实例中的其他数据库的变量名不区分大小写?

1个回答

15

为了获得所需的行为,您需要将服务器排序更改为区分大小写。仅更改数据库的排序不足够。


SQL Server安装的默认排序方式SQL_Latin1_General_CP1_CI_AS不区分大小写。

看起来您想要修改您的服务器的排序方式为不区分大小写的一种。选择一个带有_CS的排序方式。_CI表示“不区分大小写”,而区分大小写则是_CS。也许您会想要使用Latin1_General_CS_AS

这是对此前问题的极好回答:Changing SQL Server collation to case insensitive from case sensitive?

来自SQL Server Books Online

COLLATE (Transact-SQL)

标识符的排序方式取决于其定义的级别。

  • 实例级对象(如登录和数据库名称)的标识符被分配为该实例的默认排序方式。
  • 数据库内的对象(如表、视图和列名)的标识符被分配为该数据库的默认排序方式。

    例如,在具有区分大小写排序的数据库中,可能会创建仅在大小写上不同的两个表,但不可能在具有不区分大小写排序的数据库中创建这些表。有关更多信息,请参见Database Identifiers

  • 变量GOTO标签临时存储过程临时表的标识符位于服务器实例的默认排序方式中。

    当连接上下文与一个数据库相关联并创建变量、GOTO标签、临时存储过程和临时表时,可以在上下文已切换到另一个数据库后引用这些对象。

您可以使用以下命令检查您的服务器排序方式:

SELECT SERVERPROPERTY('collation');

SQL_Latin1_General_CP1_CI_AS
(1 row(s) affected)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接