2017-10-05 1 views
0

이것은 시도하고 실행하는 WinSQL 쿼리입니다.SQL에서 데이터 변환 또는 데이터 매핑 오류가 발생했습니다.

SELECT ezait6 AS "MO No", 
     vhitno AS "Item No", 
     vhrefd AS "Finish Date", 
     vhmaqa AS "Manuf Qty", 
     vhmaun AS "U/M" 
FROM m3edbtest.mwohed, 
    m3edbtest.cinacc 
WHERE ezcono = 1 
     AND vhcono = ezcono 
     AND vhrefd >= '20170801' 
     AND vhrefd <= '20170831' 
     AND vhmfno = ezait6; 

--Different 데이터 형식

--vhmfno는 ==> 정수

--ezait6는 ==> NCHAR (8)

내 쿼리를 실행 한 후, 나는 아래에있어 오류 :

-- Error : SQL0802 - Data conversion or data mapping error. 

나는 내가이는 서로 다른 데이터 유형 의 beclose 것으로 의심 내 테이블 "ezait6"중 하나에서 nvarchar 열. 그래서 그 값을 INT 유형으로 변환해야합니까?

+0

당신이 = CONVERT vhmfno 수 있지만, ezait6을하지 않은 경우는 예외가 발생합니다 숫자 데이터 만. – farbiondriven

+0

위의 주석을 사용하십시오 suggation 또한 테이블의 별칭을 만드십시오. 모든 컬럼에 대해 name.column 이름을 넣어두면 문제를 해결할 수 있습니다. –

+0

테이블 정의를 조정해야하는 것처럼 보입니다. (Integer와 nchar (8)을 결합하려면 뭔가 잘못되었습니다.) – jarlh

답변

0

VARCHAR를 필드의 내용이 숫자이고 쿼리 만에 경우 먼저 확인할 수 있습니다 (INT, ezait6)

SELECT ezait6 AS "MO No", 
     vhitno AS "Item No", 
     vhrefd AS "Finish Date", 
     vhmaqa AS "Manuf Qty", 
     vhmaun AS "U/M" 
FROM m3edbtest.mwohed, 
    m3edbtest.cinacc 
WHERE IsNumeric(ezait6)=1 
     AND ezcono = 1 
     AND vhcono = ezcono 
     AND vhrefd >= '20170801' 
     AND vhrefd <= '20170831' 
     AND vhmfno = CONVERT(INT,ezait6); 
+0

내 WinSql에서 IsNumeric이 작동하지 않습니다. – Zan

+0

서버가 MSSQL 인스턴스입니까? ? – farbiondriven

+0

No. WinSql 전용 – Zan

관련 문제