sql语句中方括号[]有什么用?
-
09-06-2019 - |
题
我注意到 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 时它会很有帮助。