我注意到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...
当前回答
除了 一些Sharepoint数据库的名称中包含连字符。在SQL语句中使用方括号可以正确解析名称。
其他回答
例如,如果(出于某种原因)使用带有特定字符的列名,它们就很有用。
Select First Name From People
不能工作,但是在列名周围加上方括号可以工作吗
Select [First Name] From People
简而言之,这是一种显式声明对象名称的方式;列、表、数据库、用户或服务器。
微软没有遵循避免使用保留字的命名约定,而是添加了新的保留字。使用括号可以将代码升级到新的SQL Server版本,而不需要首先从客户端代码中编辑Microsoft新保留的单词。编辑是一个很重要的问题。它可能会导致您的项目提前退役....
当您希望在脚本中替换全部时,方括号也很有用。如果你的批处理包含一个名为@String的变量和一个名为[String]的列,你可以将列重命名为[NewString],而不用将@String重命名为@NewString。
除了 一些Sharepoint数据库的名称中包含连字符。在SQL语句中使用方括号可以正确解析名称。
它们对于识别SQL中的每个元素非常有用。
例如:
CREATE TABLE SchemaName.TableName (
这实际上会创建一个名为SchemaName的表。在默认的dbo模式下创建TableName,尽管目的可能是在SchemaName模式内创建表。
正确的方法如下:
CREATE TABLE [SchemaName].[TableName] (
现在它知道表名是什么,以及应该在哪个模式中创建它(正确地是在SchemaName模式中,而不是在默认的dbo模式中)
在20世纪90年代SQL的黑暗时代,这是一个很好的实践,因为SQL设计者试图将字典中的每个单词作为关键字添加到无尽的新特性中,他们称之为SQL3草案。
所以它保持了向前的兼容性。
我发现它还有另一个很好的副作用,当你在代码审查和重构中使用grep时,它会帮助你很多。