' - '附近的语法不正确。(Microsoft SQL Server Native Client 10.0)

时间:2014-10-10 19:15:45

标签: sql sql-server ssis syntax-error

在做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查询的新手,我不知道如何解决这个问题。

enter image description here

3 个答案:

答案 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_CenterPartnerCenter作为字段名称而不是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)