确实在列名称中创建一个带有括号的列名实际上插入了括号



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

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

支架实际上会导致名为[SCOPE]的列?

编辑:我相信我的问题不是重复的,因为"问题"中的问题没有明确回答我的要求。

i通常在字段中包含括号和类型的名称定义,因为当您脚本脚本脚本是SSMS所做的,并且添加几个比较更容易更改,如果您的目标是一致性。如果您动态地构建对象名称,例如下面,则应该包括括号,因为您并不真正知道基础表/模式名称是合法的。这显然也是为什么SSM也这样做的原因。

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

对于程序[DBO]。[获取每月报告]这会导致N'[dbo]的@Object的价值。[获取每月报告]。如果您不使用定价名称对名称进行括号,这将导致@Object of n'dbo.get每月报告的值。在某些情况下,例如动态SQL,第二个会失败。

相关内容

最新更新