2014-10-10 103 views
3

雖然做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

回答

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去。

+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

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

2

你不能有「 - 」中列名。你可以做下劃線。但不是減號。

其實你可以,但是你必須爲[]周圍列名以短線創建,每次您要訪問你不得不[VAR]

變化

Partner-Center varchar(9), 

Partner_Center varchar(9), 

[Partner-Center] varchar(9) 
相關問題