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 字段,所以我对我缺少的内容感到困惑。我确定这是那些“duh”的答案之一:)

4

3 回答 3

3

您需要将字段名称放入方括号中。

所以换...

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

进入

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

如果您的字段或表名仅包含字母数字字符(即 AZ 和 0-9)和下划线_字符,那么您可以不使用方括号 ( [and ]) 使用它。

但是,一旦您在其中有不同的字符(以及一个很容易被 SQL 服务器混淆的字符,例如-),那么您需要将字段/表格放入方括号中。

但是,我最重要的建议是,您只_在字段和表名称中使用字母数字字符(和下划线字符),因为它被认为是更好的做法,并且会为您消除再次发生的此类事情

于 2012-10-11T15:10:24.453 回答
2

我认为它可能是列名中的“-”。试着把它放在 [] 括号内。

于 2012-10-11T15:10:08.637 回答
2

转义你的列名: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
于 2012-10-11T15:10:13.217 回答