MS-SQL表设计器中方括号[]的含义?

Bon*_*onk 26 sql sql-server

我有一个包含现有记录的现有数据库的副本.当我和桌上设计师一起玩时,注意到一些列名称周围有[].它们似乎都是任意类型(float,datetime,netext,nvarchar等),并且列属性中没有任何东西可以摆脱[].我试图重命名删除[]但是一旦我退出编辑就重新开始.

根据这篇文章,它是xml列的关键字列?但这些列都不是xml列.有人会向ms-sql新手解释这个目的吗?谢谢

Mar*_*ers 55

方括号[]用于分隔标识符.如果列名是保留关键字或包含特殊字符(如空格或连字符),则必须执行此操作.

有些用户也喜欢使用方括号,即使它们不是必需的.

来自MSDN:

定界标识符

用双引号(")或括号([])括起来.符合标识符格式规则的标识符可以分隔,也可以不分隔.

SELECT *
FROM [TableX]         --Delimiter is optional.
WHERE [KeyCol] = 124  --Delimiter is optional.
Run Code Online (Sandbox Code Playgroud)

必须在Transact-SQL语句中分隔不符合所有标识符规则的标识符.

SELECT *
FROM [My Table]      --Identifier contains a space and uses a reserved keyword.
WHERE [order] = 10   --Identifier is a reserved keyword.
Run Code Online (Sandbox Code Playgroud)

  • (他们可以引用任何标识符,而不仅仅是列.) (2认同)

Mic*_*nco 5

方括号可放置在对象周围(例如视图,数据库,列等)

正如Mark所说,它们的主要目的是封装对象,以便特殊字符(如空格或句点)不会干扰您的语法.

默认情况下,许多应用程序使用括号表示法,以进一步降低语法错误或类似内容的风险.

不包含任何空格通常是一种好习惯

Database_Name < GOOD PRACTICE

Database Name < GENERALLY TRY TO AVOID
Run Code Online (Sandbox Code Playgroud)

在任何情况下,如果使用后者,您可以使用方括号,即

select * from [Database Name]
Run Code Online (Sandbox Code Playgroud)

  • +"默认情况下,许多应用程序使用括号表示法,以进一步降低语法错误的风险"是实际的答案. (2认同)