2011-11-30 4 views
0

나는 다음과 같은 두 테이블을 비교하고있다 :Access 2003에서 유형이 일치하지 않으면 두 테이블을 비교할 수 있습니까?

SELECT * 
FROM tableA AS A INNER JOIN tableB AS B ON B.ID = A.ID 
WHERE A.col1 <> B.col1 OR A.col2 <> B.col2 OR ... 

어디 선가 타입 불일치가 (및 액세스 나를 열이 일치하지 않는 말하지 않는) 때문에이 쿼리가 작동하지 않습니다.

일치하는 열을 찾는 효율적인 방법이 있습니까? 불일치를 무시하고 어쨌든 비교할 수있는 방법이 있습니까?

편집 : 내가 (턱의 대답에 의해 영감을) Cstr를 사용하여 문자열에 이르기까지 모든 캐스팅했지만, 액세스 내가 거기에 Invalid use of Null을 말한다. 그게 Cstr가 Null을 반환한다는 것을 의미합니까? 그렇다면 nz(Cstr(...), 0)을 시도했지만 도움이되지 않습니다.

편집 : Cstr에 대한 호출 내부 nz로 통화를 이동은Invalid use of Null 제거하고 문제가 해결되었다 : Cstr(nz(..., 0))

+1

null을 반환하기 때문에가 아니라 null *을 * CStr에 전달 했으므로 null이 잘못 사용되고 있습니다. – phoog

답변

1

을 잘 모르겠어요 액세스 CAST() 작업을 지원하는 경우하지만 어디에서 절 당신은 시도 할 수 있습니다 :

VARCHAR가 지원되지 않는 경우
WHERE CAST(A.col1 AS VARCHAR(100)) <> CAST(b.col1 AS VARCHAR(100)) 

, 액세스 지원을하는 형식을 사용합니다.

첫 번째 단계에서는 모든 열 비교를 CAST() 연산으로 래핑하십시오. 작동하면 작동하지 않는 쌍을 찾을 때까지 열 비교에서 CAST() 연산을 하나씩 제거하십시오.

더 나은 액세스 지식을 가진 사람이 빠른 솔루션을 제공 할 수 있기를 바랍니다.

+0

실제로 'VARCHAR'은 Access – onedaywhen

+0

에서 지원됩니다. CAST가 작동하지 않는다면 AS 키워드 주위에 연산자가 누락되었다고 ... – Shawn

+0

하지만 Cstr을 사용하면 정말 고마워요! – Shawn

관련 문제