2012-11-09 2 views
-1

문자열 배열이 있습니다. 예를 들어 배열의 10 개 문자열 FileNamesArray []SQL, 배열 엔트리 중 DB에없는 배열을 찾으십시오.

나는 7 개의 행을 포함하는 DB 테이블을 가지고 있습니다. MyFiles 테이블 설명 :

ID int 
FileName varchar 

배열의 문자열이 내 테이블에 존재하지 않는지 알고 싶습니다. 이 같은 떨어지게 :

"SELECT * FROM (" + FileNamesArray + ") LEFTJOIN MyFiles ON FileNamesArray = MyFiles.FileName WHERE MyFiles.FileName IS NULL 

어떻게 SQL에서 그것을 표현? 임시 테이블을 피할 수 있습니까?

P. 예

FileNamesArray = ['file1', 'file2', 'file3', ..., 'file10'] 
MyFiles = ['file0', 'file1', ..., 'file6'] 
I need to get answer = ['file7', 'file8', 'file9', 'file10'] 
+0

어떤 DBMS를 사용하고 있습니까? PostgreSQL? 신탁? DB2? –

답변

1

은 파일 이름이

도움이되기를 바랍니다, 예를

DECLARE @Temp TABLE (
    Filename VARCHAR(255) 
) 

INSERT INTO @Temp VALUES ('file1') 
INSERT INTO @Temp VALUES ('file2') 
INSERT INTO @Temp VALUES ('file3') 
INSERT INTO @Temp VALUES ('file4') 
INSERT INTO @Temp VALUES ('file5') 
INSERT INTO @Temp VALUES ('file6') 
INSERT INTO @Temp VALUES ('file7') 
INSERT INTO @Temp VALUES ('file8') 
INSERT INTO @Temp VALUES ('file9') 
INSERT INTO @Temp VALUES ('file10') 

SELECT t.Filename 
FROM @Temp t 
LEFT JOIN MyFiles mf ON t.Filename = mf.Filename 
WHERE mf.Filename IS NULL 

을 위해 당신이 임시 테이블을 사용하여 멀리 얻을 수있는 방법을 볼 수 있도록, 메모리 테이블을 선언 할 수 고정하는 경우