2017-10-05 143 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

可以vhmfno = CONVERT(INT,ezait6),但它會拋出一個異常,如果ezait6沒有隻有數字數據。 – farbiondriven

+0

使用上面的評論suggation也可以爲每個列使用表的放置別名name.column名稱的別名可以解決問題。 –

+0

好像你需要調整你的表格定義...(如果你想用nchar(8)加入Integer,有些事情是錯誤的。) – jarlh

回答

0

你可以先檢查VARCHAR字段的內容是數字,查詢只對那些:

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

IsNumeric在我的WinSql中不起作用 – Zan

+0

服務器是MSSQL實例? – farbiondriven

+0

僅限WinSql – Zan