2009-08-17 33 views
2

我在我的OLTP中有一個位置表,它在編碼SSIS的同時,發現了一個LocationCode列名,在其中有一個尾隨空格。是否SQL Server命名後綴空間不敏感?

Create Table Location 
(
    [LocationId] INT IDENTITY (1, 1) 
    [LocationCode ] INT 
) 

請注意,LocationCode列的名稱有一個尾隨空格。

但是,下面的代碼工作。

SELECT LocationCode 
From Location 

由於事實上,我們位於幾個地方尾隨空間中存儲的特效使用,它繼續工作。

這怎麼可能?

回答

0

除@Matt Rogish所說的外,列名稱中的尾部空格不會像其他任何特殊字符一樣處理。它在解析查詢時實際上被忽略(而連字符或蒂爾達不會被忽略)。

我有submitted a bug Microsoft Connect for SQL Server。

5

如果在 命名的對象和對象名稱 包含尾隨空格時,SQL Server 商店的名稱,而不尾隨 空格分隔標識符使用。

http://msdn.microsoft.com/en-us/library/ms176027%28SQL.90%29.aspx

附:分隔標識符到處都是代碼異味 - 它們應該用於SPARINGLY,而不是用於每個標識符。

+0

@Matt:在SSMS中,我右鍵單擊表名並執行「腳本創建到新窗口」 - 它帶有尾部空格的[位置代碼]。 – 2009-08-17 19:32:00

+0

如果自動生成符合標準命名規則的標識符,可隨意刪除分隔符。否則,它只是增加了噪音:D – 2009-08-17 19:33:31

+0

(這可能是SSMS中的一個錯誤) – 2009-08-17 19:34:08