我注意到Visual Studio 2008在sql中的列名周围放置了方括号。括号有什么好处吗?当我手代码T-SQL,我从来没有打扰他们。
例子:
Visual Studio:
SELECT [column1], [column2] etc...
我自己的方式:
SELECT column1, column2 etc...
我注意到Visual Studio 2008在sql中的列名周围放置了方括号。括号有什么好处吗?当我手代码T-SQL,我从来没有打扰他们。
例子:
Visual Studio:
SELECT [column1], [column2] etc...
我自己的方式:
SELECT column1, column2 etc...
当前回答
在20世纪90年代SQL的黑暗时代,这是一个很好的实践,因为SQL设计者试图将字典中的每个单词作为关键字添加到无尽的新特性中,他们称之为SQL3草案。
所以它保持了向前的兼容性。
我发现它还有另一个很好的副作用,当你在代码审查和重构中使用grep时,它会帮助你很多。
其他回答
当列名是保留字时,可以使用方括号。
如果以编程方式从无法控制的列名集合生成SQL语句,则可以通过始终使用括号来避免问题。
如果在列名或标识符中使用关键字或特殊字符,则需要括号。你可以将一个列命名为[First name](带一个空格)——但是每次你引用这个列时都需要使用括号。
新的工具将它们添加到任何地方,只是以防万一或为了一致性。
在20世纪90年代SQL的黑暗时代,这是一个很好的实践,因为SQL设计者试图将字典中的每个单词作为关键字添加到无尽的新特性中,他们称之为SQL3草案。
所以它保持了向前的兼容性。
我发现它还有另一个很好的副作用,当你在代码审查和重构中使用grep时,它会帮助你很多。
如果列的名称与SQL关键字相同,或者列中有空格,则使用这种方法非常方便。
例子:
create table test ( id int, user varchar(20) )
哦,不!关键字“user”附近的语法错误。 但这:
create table test ( id int, [user] varchar(20) )
工作很好。
除了 一些Sharepoint数据库的名称中包含连字符。在SQL语句中使用方括号可以正确解析名称。