2010-05-22 29 views
2

方括号允许您为包含不允许用于列名或别名的字符的列或别名使用名称。用方括号括起来的表/列名称,即使它们的名称由合法字符组成

a)我注意到很多时候,表名和列名被括在方括号中,即使它们的名字由完全合法的字符组成。这是为什么?

b)据我所知,包围对象名称的方括号实际上并不是该名称的一部分。因此,如果我们创建了一个名为[A]表:

CREATE TABLE [A] (…) 

我们可以在以后引用它,而不使用括号:

SELECT * FROM A 

但是,为什么是不一样的真当我尝试引用列从CONTAINSTABLE函数返回的表中的KEY?也就是说,如果我省略封闭列名的括号,我得到一个错误:

SELECT ct.KEY 
FROM CONTAINSTABLE(fullText,*,'some_string') as ct 

感谢名单

回答

1

KEY是SQL的保留字等都需要支架使用它作为列名。

我想很多时候你看到多余的方括号可能是一个工具生成的代码。 Management Studio在生成一些脚本时将它们放在一边。

+0

但我也看到了不少查询(不能自动通过一些工具生成),其中方括号在封闭表/列名称的情况下,即使名称未使用保留字或非法字符。也许是为了可读性而添加括号? – AspOnMyNet 2010-05-22 19:21:33

+1

我想这只是一个味道问题。我不亲自把它们放在上面,因为我很懒,不喜欢打字。另外,如果您曾经在SSMS中使用过“编辑器设计中的设计查询”,它将会将它们全部剥离。 – 2010-05-22 19:38:14

+0

谢谢你们的帮助 – AspOnMyNet 2010-05-22 20:24:34

1

括号的不仅是法律字符,但允许列名的使用,否则保留字等