1

私が取り組んでいるラボ用に 2 つのテーブルがあります。表 1 は役職のリストで、説明、役職、ステータス フィールド、および 2 番目の表である 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 フィールドであるため、何が欠けているのか混乱しています。私はこれがそれらの「当然の」答えの1つであると確信しています:)

4

3 に答える 3

3

フィールドの名前を角括弧で囲む必要があります。

だから変えて…

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

の中へ

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

フィールドまたはテーブル名に英数字 (A ~ Z および 0 ~ 9) とアンダースコア文字のみが含まれる場合は、角かっこ (および)_なしで使用できます。[]

しかし、そこに別の文字 (および などの 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 に答える