我注意到 Visual Studio 2008 在 sql 中的列名称周围放置了方括号。括号有什么好处吗?当我手工编写 T-SQL 代码时,我从不关心它们。

例子:视觉工作室:选择[列1]、[列2]等...

我自己的方式:选择列 1、列 2 等...

有帮助吗?

解决方案

如果在列名称或标识符中使用关键字或特殊字符,则需要括号。您可以命名一个列 [First Name] (带有空格)——但是每次引用该列时都需要使用括号。

较新的工具将它们添加到各处,以防万一或为了保持一致性。

其他提示

如果您的列与 SQL 关键字具有相同的名称,或者其中包含空格,那么它们会很方便。

例子:

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

不好了!关键字“user”附近的语法不正确。但是这个:

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

工作正常。

例如,如果您(出于某种原因)使用带有某些字符的列名,它们会很有用。

Select First Name From People

不起作用,但在列名两边加上方括号就可以了

Select [First Name] From People

简而言之,它是一种显式声明对象名称的方式;列、表、数据库、用户或服务器。

列名可以包含会混淆查询执行引擎的字符和保留字,因此始终在它们周围放置括号可以防止这种情况发生。我想比检查问题然后处理它更容易。

当列名是保留字时可以使用方括号。

如果您以编程方式从您无法控制的列名集合生成 SQL 语句,则可以通过始终使用括号来避免问题。

此外,某些SharePoint数据库包含其名称中的连字符。在 SQL 语句中使用方括号可以正确解析名称。

我相信它添加它们是为了保持一致性......仅当列名中包含空格或特殊字符时才需要它们,但在 IDE 生成 SQL 时始终包含它们会更简洁。

无论遵循避免使用保留字的命名约定,Microsoft 都会添加新的保留字。使用括号可以将您的代码升级到新的 SQL Server 版本,而无需首先从客户端代码中编辑 Microsoft 新的保留字。编辑可能是一个重大问题。它可能会导致您的项目提前退役......

当您想要在脚本中替换全部时,括号也很有用。如果批处理包含名为 @String 的变量和名为 [String] 的列,则可以将该列重命名为 [NewString],而无需将 @String 重命名为 @NewString。

在 1990 年代 SQL 的黑暗时代,这是一个很好的实践,因为 SQL 设计者试图将字典中的每个单词添加为关键字,以实现无穷无尽的新功能,他们将其称为 SQL3 草案。

因此它保持了向前兼容性。

我发现它还有另一个很好的副作用,当你在代码审查和重构中使用 grep 时它会很有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top