2011-03-07 5 views
1

테이블에서 "YEAR"이라는 열을 선택하려고합니다.YEAR이라는 열을 선택하면 SQL 오류가 발생합니다.

나는 사용하여이를 달성 할 수있는 사항은 다음과 같습니다

SELECT * FROM OPENQUERY (mybook, 'SELECT year FROM mytable') 

다른 이유가 "올해 '예약어의 일종이 때문이거나 :

SELECT * FROM OPENQUERY (mybook, 'SELECT mytable.year FROM mytable') 

하지만을 나는이 사용할 때 ?

+1

SQL 어떤 구현 주위에? – JNK

+0

SQL Server I think ... – Tom

+0

두 개의 서버가 관련되어 있습니다. 분명히 당신은 SQL Server에서 실행하고 있습니까? (버전은 무엇입니까?) - mybook이 가리키는 곳 (데이터베이스 시스템 및 버전) – RichardTheKiwi

답변

6

, Year는 예약 된 단어입니다. 그래서 그것을 사용하려고하면 불평 할 것입니다.

MySql을 사용하는 경우 1 년 전으로 백 틱 (`)을 사용할 수 있습니다.

SQL Server에서 year, [year]을 사용하면 []을 사용할 수 있습니다.

편집

업데이트 된 질문을보고 한 후, 다음과 같은 SQL 작업을해야합니다 :

SELECT * FROM OPENQUERY (mybook, 'SELECT [year] FROM mytable')

+0

당신이 그럴 만하다고 생각하지만 해결책이 작동하지 않았습니다 ... 나는 그것이 실제로 OPENQUERY와 함께 사용되는 방법을 보여주기 위해 쿼리를 업데이트했습니다 ... – Tom

+1

@Tom - DB 이름/스키마 형식 (Database.dbo.table) 또는 SQL Server 이름 문자 어느 것이 대괄호'[] '입니까 – JNK

+1

이것은 너무 많이 표결됩니까 ?? 거짓말입니다. SQL Server는 따옴표없이 일년에 결코 꾸짖지 않았습니다. 예약되었지만 보호되지는 않습니다. 방금 OPENQUERY로 확인했는데'select year from mytable'과 같이 작동했습니다. – RichardTheKiwi

4

사용 SQL 서버에서

SELECT [year] FROM mytable 
3
SELECT [year] FROM mytable 

를 사용하여 브래킷을 필드 이름

관련 문제