2016-09-07 2 views
0
SELECT 
    tMI.MI 
FROM 
    tMI 
LEFT JOIN 
    tCard ON tCard.CardNumber = tMI.MI 
INNER JOIN 
    TMIN on TMIN.T_ID = tMI.MI 
WHERE 
    tCard.CardNumber IS NULL 
    AND tMI.MI IS NOT NULL 

위의 코드를 실행 중이고 내부 조인이 제대로 실행되지 않습니다. 그러나 일단 내부 조인을 추가하면 변환 할 수 없다는 메시지가 나타납니다.varchar 값 ' "...."'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다.

데이터는 여기 저기에있는 몇 가지 추가 정보가 될 수 있습니다.

어떻게하면이 오류를 해결할 수 있습니까? 당신이 동일한 데이터 타입 인 당신의 ON 상태에서 언급 된 모든 열을 확인

SELECT 
    cast(tMI.MI as varchar) as MI 
FROM 
    tMI 
LEFT JOIN 
    tCard ON tCard.CardNumber = tMI.MI 
INNER JOIN 
    TMIN on TMIN.T_ID = tMI.MI 
WHERE 
    tCard.CardNumber IS NULL 
    AND tMI.MI IS NOT NULL 
+0

테이블 구조, 샘플 데이터 및 예상 결과를 게시해야합니다. 마찬가지로, 여러분의 에러는't_id'와'mi'는 다른 데이터 타입입니다 (단순히'int'와'varchar'에 결합 할 수는 없습니다) ... – sgeddes

+0

TMIN.T_ID와 tMI.MI 컬럼의 데이터 타입을 검사하십시오. 아마도 그들 중 하나는 varchar (tMI.MI)이고 다른 하나는 int (TMIN.T_ID)입니다. 나는 그들 중 하나를 비교를 위해 던지거나 개조 할 것을 제안한다. – Nagahornbill

답변

1

나는 당신의 두 테이블 열이 서로 다른 데이터 타입 생각합니다.

CardNumber를 varchar (실제로는 integer 값임) 및 Mi를 정수로 저장하는 경우 아래와 같이 조건을 수정하십시오.

ON CAST (tCard.CardNumber as INT) = tMI.MI 
1

같은 SQL에서 캐스트 기능을 다음을 사용하므로

관련 문제