创建带括号的列名实际上是否在列名中插入括号?

时间:2017-12-06 13:57:07

标签: sql-server tsql

例如,如果我创建一个这样的表:

CREATE TABLE FIREARM_BUILD 
(
    [SCOPE] VARCHAR(max)
);

括号实际上是否会产生名为[SCOPE]

的列

编辑:我认为我的问题不重复,因为“问题”中的问题没有明确回答我的问题。

1 个答案:

答案 0 :(得分:1)

我通常在字段和类型名称定义中包含括号,因为当您编写一个SSMS所做的对象时,如果您需要更改一些,那么更容易添加一些旨在保持一致性。如果您正在动态构建对象名称(如下所示),则应该包括括号,因为您并不真正知道基础表/架构名称是合法的。这显然也是SSMS为什么会这样做的原因。

declare @object [NVARCHAR](1000) = QUOTENAME(OBJECT_SCHEMA_NAME(@@PROCID)) + N'.' + QUOTENAME(OBJECT_NAME(@@PROCID));

对于程序[dbo]。[获取每月报告],这会产生一个@object of N' [dbo]的值。[获取每月报告]'。如果您没有使用QUOTENAME将名称括起来,这将导致N&#d; dbo的获取值。获取月度报告'。在某些情况下,例如动态sql,第二种情况会失败。