2011-06-23 79 views
3

有人可以解釋MSManagement Studio總是在查詢中封裝列的方括號的重要性。 防爆..sql服務器管理工​​作室語法

SELECT TOP 1000 [id] 
    ,[app_fn] 
    ,[app_mn] 
    ,[app_ln] 
    ,[app_suffix] 

它們是什麼在那裏,我怎麼可以用它來我的優勢在哪裏?

+0

只是要清楚:這是完全有效的T-SQL語法,將工作無處不在 - *不*只是在SQL Server管理工作室 –

回答

5

它們允許使用

  • 有空格
  • 保留關鍵字
  • 以數字開頭的標識符
  • 使用標點符號
  • otherwise invalid

試試這個沒有[和]

CREATE TABLE dbo.[CREATE TABLE] (
    [SELECT] int NOT NULL, 
    [int] varchar(20) NOT NULL, 
    [NOT NULL] datetime NULL, 
    [Mary's Lamb] datetime NULL, 
    [666 The number of the "beast"!] datetime NULL 
    ) 

在這種情況下,SSMS只是一直使用它們

+0

爲了安全起見,是的。 –

7

如果您將keyword用作列名稱,通常會使用它們。 (淘氣)

此外,如果你有一個space在你的列名稱(也淘氣)。

+0

和保護你如果你的專欄是保留字。也頑皮。 – asawyer

+0

+1 ..也可以用它們指定與SQL中關鍵字相同的列名稱。例如'SELECT'SOMETHING'[SELECT]' – Chandu

+1

在評論中攜帶一個meme主題*也是調皮的* –

4

下面有一個例子

我有一個表稱爲組,它具有字段的用戶,組

很好,用戶和組都保留字,通過自動地把方括號表,字段等無問題就會出現。

所以

select group from groups group by user 

會失敗

select [group] from [groups] group by [user] 

的習慣。

+2

另外'[帶空格或保留字符的列名]' –

+0

是的。它也包括空格和保留字符 – BugFinder

相關問題