2010-07-19 4 views
4

열 이름에 마침표를 사용할 수있는 Proficy Historian에 연결되었습니다. 데이터는 비 DBMS 형식으로 저장되기 때문에 테이블에 스키마가 설정되어 있지 않으므로 openquery을 사용하여 데이터를 가져올 수 없습니다. 그래서 네 부분 이름 구문을 사용하여 데이터를 가져와야합니다. 이 예제는 작동합니다열 이름에 마침표가있는 열 선택 SQL Server

SELECT * FROM iHist...[SELECT * FROM ihTrend] 

하지만이 근처의 구문이 잘못 실패 '.'. SERVER.pid_astatus[07][0].F_CV.Value

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07][0].F_CV.Value] FROM ihTrend] 

는 이것이 실패 열

이름뿐만와 '에서'키워드 근처 잘못된 구문이다.

SELECT * FROM 
    iHist...[SELECT [SERVER.pid_astatus[[07]][[0]].F_CV.Value] from ihTrend]` 

내가 SQL Server가 열로이 참조 할 수있는 방법에 어떤 아이디어

?

편집 :

는 키워드 근처 의 구문이 잘못 내부 작동하지 않습니다 그러나 괄호는 SQL 전화

SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM iHist...[SELECT * FROM ihTrend] 

의 외부에서만 작동 탈출 할 수있는 권리 브래킷의

마틴 제안 '에서'.

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM ihTrend] 

편집

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value]] FROM ihTrend] 

나는 열 탈출 : 탈출했다

답변

6

를 당신 만이 키워드 근처에 나를 위해

CREATE TABLE #t(
    [pid_astatus[07]][0]].F_CV.Value] int 
) 

SELECT [pid_astatus[07]][0]].F_CV.Value] 
FROM #t 
+0

''@t table ([[[a]]] int)로 @t'에서 [[a]]]를 선택하면 오류가 발생합니다. 기본적으로 [select [[[a]]]를 제외한 다른 모든 조합과 동일합니다. – Andomar

+0

@Andomar - 방금 게시 한 코드가 작동합니까? –

+1

+1 예,'select * from syscolumns where id = OBJECT_ID (...)'는 내 컬럼 이름'[[[a]]]'이 실제로 [[a]'로 이름 붙여진 것을 확인합니다. 잘 잡으세요! – Andomar

4

(대신 만약 마틴 스미스의 대답이 투표처럼, 새로운 지식을 반영하기 위해 수정 됨!)

두배로 ]을 탈출하십시오.

귀하의 의견을 바탕으로
SELECT * FROM 
    iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] from ihTrend] 

, 시도 :

SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM iHist...ihTrend 
+0

'의 구문이 잘못 작동이 ]

[pid_astatus[07]][0]].F_CV.Value] 

탈출해야합니다 'from'. o SQL 호출을 날려 버리면 거기에 많은 대괄호가 있습니다. 그래도 다른 오류. 일반적으로 괄호 안의'[SERVER.pid_astatus [07] [0] .F_CV.Value]는 구문 강조 표시가없는 검은 색으로 표시됩니다. 그러나 구문 강조 표시를 제안한 후에'from' 명령의 끝까지 – efbenson