代码之家  ›  专栏  ›  技术社区  ›  Paulj

SQL语句中方括号[]的用法是什么?

  •  137
  • Paulj  · 技术社区  · 16 年前

    我注意到Visual Studio 2008在SQL中的列名周围放置了方括号。括号有什么好处吗?当我提交代码T-SQL时,我从来没有用过它们。

    例子: VisualStudio: 选择[第1列]、[第2列]等…

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

    9 回复  |  直到 8 年前
        1
  •  148
  •   shsteimer    11 年前

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

    新的工具在任何地方添加它们,只是为了以防万一或保持一致性。

        2
  •  49
  •   Blorgbeard    16 年前

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

    例子:

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

    哦不!关键字“user”附近有语法错误。 但这:

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

    工作良好。

        3
  •  12
  •   GateKiller    16 年前

    如果您(出于某种原因)使用带有特定字符的列名,那么它们很有用。

    Select First Name From People
    

    不起作用,但在列名周围加上方括号会起作用

    Select [First Name] From People
    

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

        4
  •  6
  •   Will    16 年前

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

        5
  •  5
  •   Torlack    16 年前

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

    如果您正在从不控制的列名称集合中编程生成SQL语句,那么可以通过始终使用括号来避免问题。

        6
  •  4
  •   HSchlarb    12 年前

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

        7
  •  3
  •   Jeff Donnici    16 年前

    我相信这是为了保持一致…只有在列名中有空格或特殊字符时才需要它们,但是在IDE生成SQL时,更清楚的是始终包含它们。

        8
  •  3
  •   Bill    9 年前

    不管遵循避免使用保留字的命名约定,微软都会添加新的保留字。使用括号可以将代码升级到新的SQL Server版本,而无需首先从客户端代码中编辑Microsoft的新保留字。编辑工作可能是一个重大问题。它可能会导致你的项目过早地退役……

    当您想替换脚本中的所有内容时,括号也很有用。如果批处理包含名为@string的变量和名为[string]的列,则可以将该列重命名为[newstring],而不必将@string重命名为@newstring。

        9
  •  2
  •   Lothar    8 年前

    在90年代SQL的黑暗时代,这是一个很好的实践,因为SQL设计人员试图将字典中的每一个词都添加为新特性的无休止的雪崩关键字,他们称之为sql3草稿。

    所以它保持了向前的兼容性。

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