2

我正在维护由另一个人在 SQL Server 中创建的数据库。在一个表中,我发现一列名称在方括号之间。该字段的名称是desc,它在表中存储为[desc]。其他字段不带方括号存储。这种选择背后有什么特殊原因/约定吗?

建立在数据库之上的应用程序是用 C# 或 VB.NET 开发的。

谢谢

4

3 回答 3

7

括号(或其他数据库引擎中的其他标识符)只是告诉查询引擎该术语是数据库中对象的标识符的显式方式。常见原因包括:

  1. 否则,包含空格的对象名称将无法作为查询的一部分进行解析,除非它们被括在括号中。
  2. 作为保留字的对象名称可能无法解析(或者更糟糕的是,无法正确解析并执行意外的事情)。

(我想也有可能会有一个非常轻微的性能改进,因为引擎不需要尝试识别该项目的含义,它已被明确告知它是一个对象。它仍然需要验证这一点,当然,但这可能对内部工作有一点帮助。)

于 2011-09-27T13:51:49.397 回答
4

如果您的名称包含保留字(例如 SELECT)或空格,则需要用 [] 将名称括起来。

在您的示例中,您有 [desc],它是 DESCENDING 的缩写。

于 2011-09-27T13:49:37.703 回答
3

例如,如果您有一个关键字字段,例如 [Date] 或 [Select],或者在这种情况下为 [desc]

于 2011-09-27T13:47:19.073 回答