2011-06-23 49 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

相关问题