在做SSIS工作时,我的创建表查询中出现错误
' - '附近的语法不正确。(Microsoft SQL Server Native Client 10.0)
SQL语句:
CREATE TABLE Staging_ACD_Precision_Queue
(
PrecisionQueueID int,
BucketIntervalID int,
EnterpriseName varchar(32),
AgentOrdering int,
CallOrdering int,
Description varchar(255),
ServiceLevelThreshold int,
ServiceLevelType smallint,
ForceExpandingQueue varchar(1),
Deleted varchar(1),
ChangeStamp int,
Partner varchar(4),
Center varchar(4),
Partner-Center varchar(9),
LOB varchar(4),
Circle varchar(4),
TypeOfBusiness varchar(4)
)
我尝试了上面的查询。我想从错误消息中可以看出问题出在Partner-Center varchar(9)
,但是我没能解决这个错误。由于我是SSIS和SQL查询的新手,我不知道如何解决这个问题。
答案 0 :(得分:9)
您需要在Partner-Center
周围放置方括号,例如[Partner-Center]
。字段名称中不允许使用嵌入空格或特殊字符,但您可以通过将字段名称放在方括号内来转义它们。
CREATE TABLE Staging_ACD_Precision_Queue (
PrecisionQueueID int,
BucketIntervalID int,
EnterpriseName varchar(32),
AgentOrdering int,
CallOrdering int,
Description varchar(255),
ServiceLevelThreshold int,
ServiceLevelType smallint,
ForceExpandingQueue varchar(1),
Deleted varchar(1),
ChangeStamp int,
Partner varchar(4),
Center varchar(4),
[Partner-Center] varchar(9),
LOB varchar(4),
Circle varchar(4),
TypeOfBusiness varchar(4)
)
正如其他人在此处所述,我也建议您避免在字段名称中使用连字符,并使用Partner_Center
或PartnerCenter
作为字段名称而不是Partner-Center
答案 1 :(得分:2)
SQL Server在裸字段名称中不允许-
。但是,你可以逃避"它通过用方括号([]
)包围字段名称:
CREATE TABLE Staging_ACD_Precision_Queue (
PrecisionQueueID int,
BucketIntervalID int,
EnterpriseName varchar(32),
AgentOrdering int,
CallOrdering int,
Description varchar(255),
ServiceLevelThreshold int,
ServiceLevelType smallint,
ForceExpandingQueue varchar(1),
Deleted varchar(1),
ChangeStamp int,
Partner varchar(4),
Center varchar(4),
[Partner-Center] varchar(9),
LOB varchar(4),
Circle varchar(4),
TypeOfBusiness varchar(4)
)
答案 2 :(得分:2)
你不能拥有" - "在列名称中。你可以做下划线。但不是减号。
实际上你可以用[]围绕列名创建一个破折号,每次你想要访问你都需要[var]
更改
Partner-Center varchar(9),
是
Partner_Center varchar(9),
或
[Partner-Center] varchar(9)