2017-10-05 7 views
0

Dies ist meine WinSQL-Abfrage, die ich versuche und ausführe.Datenkonvertierung oder Datenzuordnungsfehler in 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 Datentypen

--vhmfno ==> Integer

--ezait6 ==> nchar (8)

Nachdem ich meine Abfrage ausführen, habe ich unten Fehler:

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

ich vermute, dass es beclose von anderen Datentyp ist ich habe nvarchar Spalte in einer meiner Tabelle "ezait6". Also wie sollte ich diese Werte in INT-Typ konvertieren.

+0

können Sie vhmfno = CONVERT (INT, ezait6), aber es wird eine Ausnahme aus, wenn ezait6 nicht haben nur numerische Daten. – farbiondriven

+0

Verwenden Sie den obigen Kommentar Vorschlag machen auch Alias ​​der Tabelle put aleas name.column Name für jede Spalte möglicherweise sein wird das Problem lösen. –

+0

Scheint so, als müssten Sie Ihre Tabellendefinitionen anpassen ... (Wenn Sie Integer mit nchar (8) verbinden wollen, stimmt etwas nicht.) – jarlh

Antwort

0

Sie können zunächst prüfen, ob der Inhalt des varchar Feld numerisch und Abfrage ist nur auf solche, mit denen

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 funktioniert nicht in meinem WinSql – Zan

+0

Ist der Server eine MSSQL-Instanz? ? – farbiondriven

+0

Nein WinSQL nur – Zan

Verwandte Themen