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