2010-05-22 34 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

括號的不僅是法律字符,但允許列名的使用,否則保留字等