附近有语法错误 ' - ' ' - '(微软SQL服务器本机客户端。(Microsoft SQL Server本机客户端10.0)

问题描述:

虽然做SSIS的工作我在创建表的查询附近有语法错误 ' - ' ' - '(微软SQL服务器本机客户端。(Microsoft SQL Server本机客户端10.0)

附近有语法错误得到了一个错误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

您需要使用方括号:'[Partner-Center]' – Lamak 2014-10-10 19:16:37

+0

AFIK在SSIS中我们不能使用方括号,这是主要问题。我也尝试了方括号。 – Sathiya 2014-10-10 19:18:03

+3

为什么不按照其余字段的命名约定称之为PartnerCenter? – Namrehs 2014-10-10 19:18:40

你需要把周围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去。

+3

+1,正确的,你需要方括号'[Partner-Center] varchar(9)',但我建议你避免名称中包含任何特殊字符。我们的命名标准可以防止任何特殊字符。此外,这个列看起来很奇怪,像前面两列('Partner varchar(4),Center varchar(4)'),这是否有可能是冗余组合数据?没有通过我的嗅觉测试。 – 2014-10-10 19:30:31

+0

@KM我希望不会,因为它比合作伙伴和中心的合并长度少一个字符。 – Donal 2014-10-10 19:35:55

+1

@Donal可能是因为他们之间有'-' ;-) – Lamak 2014-10-10 19:52:15

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) 
) 
+0

为什么downvote? – Mureinik 2015-03-04 15:47:42

+0

你能举出SQL Server 2008的这些信息吗(因为OP指的是SNC 10.0?我只能在SQL Server 2016中找到这个信息。 – 2017-03-03 21:20:58

你不能有“ - ”中列名。你可以做下划线。但不是减号。

其实你可以,但是你必须为[]周围列名以短线创建,每次您要访问你不得不[VAR]

变化

Partner-Center varchar(9), 

Partner_Center varchar(9), 

[Partner-Center] varchar(9)