SQL Server命名尾随空格是否不敏感?

SQL Server命名尾随空格是否不敏感?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的OLTP中有一个Location表,在对SSI进行编码时,我发现LocationCode列名中有一个尾随空格 Create Table Location ( [LocationId] INT IDENTITY (1, 1) [LocationCode ] INT ) 请注意,LocationCode列名后面有一个空格 然而,下面的代码是有效的 SELECT LocationCode From Location 事实上,我们找到了在存储过程中使用尾随空间的几个地方,它一直在

我的OLTP中有一个Location表,在对SSI进行编码时,我发现LocationCode列名中有一个尾随空格

Create Table Location
(
    [LocationId] INT IDENTITY (1, 1)
    [LocationCode ] INT
)
请注意,LocationCode列名后面有一个空格

然而,下面的代码是有效的

SELECT LocationCode
From Location
事实上,我们找到了在存储过程中使用尾随空间的几个地方,它一直在工作

这怎么可能

如果在以下情况下使用分隔标识符: 命名对象和对象名称 包含尾随空格,SQL Server 存储不带尾随字符的名称 空间


p、 任何地方的美国分隔标识符都是一种代码气味——它们应该谨慎使用,而不是针对每个标识符。

除了@Matt Rogish所说的之外,列名中的尾随空格与任何其他特殊字符都不一样。在解析查询时,它实际上被忽略,而连字符或tilda则不会被忽略


我必须使用Microsoft Connect for SQL Server。

@Matt:在SSMS中,我右键单击了表名,并在新窗口中创建了脚本-它出现了带有尾随空格的[LocationCode]。如果正在为遵循标准命名规则的标识符自动生成分隔符,请随意删除这些分隔符。否则,它只会增加噪音:DIt可能是SSMS@MattRogish:尝试创建我显示的表,然后从SSMS中编写脚本。。保留尾随空格。但是您可以在不带尾随空格的情况下查询它。实际上,在syscolumns中,它包含尾随空格。确实可以从sysobjects中选择'start'+name+'end',其中name(如'LocationCode%'),但是解释器必须去掉尾随空格。因此,它存储空间,但在查询时忽略它,因为它可能应该这样做。听起来我们发现了一个文档错误:D