2012-10-11 28 views
1

我有2個表格供實驗室工作。表1列出了職位名稱,其中包含說明,職位和狀態字段,以及我需要能夠與第二張表Employees聯合加入的索引值。下面的查詢似乎很簡單,但它拋出回一個錯誤:看似簡單的查詢會引發錯誤

SELECT e.FirstName, e.LastName, e.Salary, jt.JobTitle, jt.JobDesc, jt.[Status] 
From Employee e 
JOIN Job_Title jt 
ON e.EEO-1Class = jt.EEO-1Class 
WHERE e.Salary BETWEEN 10000 AND 40000 

它e.EEO-1Class炸燬說:「這裏的條件預計,臨近「在上下文中指定非布爾類型的表達式類。

我加入的字段是int字段已經讓我感到困惑的是缺少什麼,我。我敢肯定,這是那些‘咄’的答案之一:)

+2

是'EE0-1Class'列?用括號括起'[EE0-1Class]'或雙引號''EE0-1Class「'(你的DBMS是什麼?)。減號字符被解析爲減號。 –

+0

ouuuuh,你的列名是...異國情調。我想你的問題來自「 - 」和數字。我不知道你在使用什麼sql衍生工具,但是試着把列放在\(例如\ e.EEO-1Class \'= ...),然後再次嘗試你的運氣。 – Najzero

回答

2

我想它可能是列名中的' - ',請嘗試將它放在[]括號內[

2

esca請使用括號將列名稱:EEO-1ClassEEO-1Class。由於-符號,服務器執行減法

SELECT e.FirstName, e.LastName, e.Salary, jt.JobTitle, jt.JobDesc, jt.[Status] 
From Employee e 
JOIN Job_Title jt 
ON e.[EEO-1Class] = jt.[EEO-1Class]  -- << this two columns. 
WHERE e.Salary BETWEEN 10000 AND 40000 
+0

看,我覺得這將是一個「杜」時刻。有道理。感謝您的答案! – user1738575

+0

@ user1738575歡迎您! –

+0

我看到你是新來的。如果您覺得答案可以解決問題,請點擊綠色複選標記將其標記爲「已接受」。這有助於將注意力集中在仍然沒有答案的舊版SO上。 –

3

您需要將該字段的名稱放在方括號中。

因此改變......

ON e.EEO-1Class = jt.EEO-1Class 

進入

ON e.[EEO-1Class] = jt.[EEO-1Class] 

如果您的字段或表名稱只包含字母數字字符(即AZ和0-9)和下劃線_字符,然後你可以使用它沒有方括號([])。

但是,只要你有不同的字符(並且很容易被SQL服務器混淆,如-),那麼你需要將字段/表格放在方括號中。

但是,我會建議最重要的一點是,你只能使用字母數字字符(和下劃線_字符)爲您的字段和表名稱,因爲它被認爲是更好的做法,並將刪除發生這種類型的事情再次爲你