2008-09-09 223 views
117

我注意到Visual Studio 2008在sql中的列名周圍放置了方括號。括號是否有優勢?當我手工編寫T-SQL時,我從來沒有爲它們困擾過。sql語句中方括號[]的用法是什麼?

例子: 的Visual Studio: 選擇[列1],[列2]等..

我自己的方式: SELECT列1,列2等等

+0

這是你的手工編碼的SQL從來不需要括號,你的數據庫命名約定應排除需要括號的名字是一件好事。 – 2008-09-09 21:06:54

+0

相關答案討論QUOTED_IDENTIFIER設置:http://stackoverflow.com/questions/19657101/what-is-the-difference-between-square-brackets-and-single-quotes-for-aliasing-in – 2014-10-29 02:09:07

回答

127

括號是必需的。你可以命名一列[First Name](帶一個空格) - 但是那麼每當你引用該列時,你都需要使用括號。

爲了以防萬一或爲了保持一致性,新工具將它們添加到任何地方。

5

該支架可使用時列名是保留字。

如果你是編程生成從你不用管列名的集合的SQL語句,那麼你就可以避開始終使用括號問題。如果您使用關鍵字或特殊字符的列名或標識符

6

列名可以包含字符和保留字會混淆查詢執行引擎,所以將它們放在括號周圍隨時防止這種情況的發生。我想,比檢查問題然後處理它更容易。

3

我相信這增加了他們那裏的一致性......當你在列名稱中的空格或特殊字符他們只需要,但它的清潔劑只是包括他們當IDE生成SQL的所有時光。

41

如果您的列與SQL關鍵字具有相同的名稱,或者其中包含空格,它們非常方便。

例子:

create table test (id int, user varchar(20)) 

哦,不!關鍵字'user'附近的語法不正確。 但這:

create table test (id int, [user] varchar(20)) 

工作正常。

10

如果您是(出於某種原因)使用帶有特定字符的列名稱,則它們非常有用。

Select First Name From People 

是行不通的,但是把方括號的列名會工作

Select [First Name] From People 

總之,它是明確聲明對象名稱的方式;列,表,數據庫,用戶或服務器。

4

此外 有些SharePoint數據庫包含在其名稱中的連字符。在SQL語句中使用方括號可以正確解析名稱。

3

不管下面是避免使用保留字的命名約定,微軟並添加新的保留字。使用括號可以讓您的代碼升級到新的SQL Server版本,而無需首先編輯客戶端代碼中的Microsoft新保留字。這種編輯可能是一個重大關切。這可能會導致您的項目過早退役....當你想全部替換在腳本

支架也可以是有用的。如果您的批處理包含名爲@String的變量和名爲[String]的列,則可以將該列重命名爲[NewString],而無需將@String重命名爲@NewString。

1

在SQL中1990ths黑暗時代它是作爲SQL設計師試圖在字典中的關鍵字的新功能無盡雪崩添加的每個字一個很好的做法,他們把它稱爲SQL3草案。

因此它保持向前兼容性。

我發現它還有另一個很好的副作用,它有很大幫助,當您使用的代碼審查和重構的grep。

相關問題