我的OLTP中有一个位置表,在对它编码SSIS时,我发现一个LocationCode列名称中有一个尾随空格。
Create Table Location
(
[LocationId] INT IDENTITY (1, 1)
[LocationCode ] INT
)
请注意,LocationCode列名称具有尾随空格。
然而,以下代码有效。
SELECT LocationCode
From Location
事实上,我们找到了存储过程中使用尾随空格的几个地方,并且它一直在继续工作。
这怎么可能?
答案 0 :(得分:5)
如果使用分隔标识符 命名对象和对象名称 包含尾随空格,SQL Server 存储没有尾随的名称 空格。
http://msdn.microsoft.com/en-us/library/ms176027%28SQL.90%29.aspx
P.S。各地的分隔标识符都是代码味道 - 它们应该只使用,而不是每个标识符。
答案 1 :(得分:0)
除了@Matt Rogish所说的,列名中的尾随空格不会被视为任何其他特殊字符。解析查询时实际上忽略了它(而连字符或tilda不会被忽略)。
我有submitted a bug到Microsoft Connect for SQL Server。