2013-03-27 145 views
0

我使用DB2的i5/OS版本。我有一個salesview準備,看起來像這樣:插入從DB2 SQL視圖到表異常字符

ORGNNAME       SHIPTONO  ITEMNO 

    Landoll Corporation     00000001  EJ8-4001A  
    MCFA - Brittmoore Warehouse   ¿·11115R  114-04-4003 

列定義是:

ORGNNAME CHAR(35) CCSID 65535 DEFAULT '' ,  
SHIPTO CHAR(8) CCSID 65535 DEFAULT '' 
ITEMNO CHAR(15) CCSID 65535 DEFAULT '' 

我要無條件地插入這些值包括在表中的上攻問號這我不能至。可有一個人幫我這個請

我有類似的列 另一個表讓說,2列ORGNNAME & SHIPTONO在表中。我想要從view。 我使用的代碼類似於:

INSERT INTO ADCLIBT.TEMP11 
(
SHIPTO, 
SHIPMNTNO, 
itnbr 
) 
SELECT  
cast(SHIPTONO as varchar(20)), 
SHIPNUMBER, 
ITEMNO 
FROM AMFLIB7.salesview WHERE SHIPDATE=1130204 AND ITEMNO LIKE ('1SD.055.%') 

我試圖這樣做,但給我一個錯誤:

QL State: 22018 
Vendor Code: -420 
Message: [SQL0420] Character in CAST argument not valid 
+0

能有一個人,請嘗試回答這個問題實在是importamt – racerxnox 2013-04-01 12:03:46

回答

0

根據「恢復」的消息SQL0420給,你需要改變將結果數據類型CAST添加到可接受該值的一個。一個直接的例子是:

CAST(SHIPTONO AS VARCHAR (20) CCSID 65535) 

使用CCSID 65535字符數據可以(或者是)一個非常糟糕的主意。它使得數據非常不可移植並且隨着事物在未來發生變化而帶來持續的問題,例如,當定義改變時或者當數據必須與其他平臺(例如PC)交換時。根據定義,它是二進制數據,沒有編碼,也不會轉換爲其他編碼,如EBCDIC < - > ASCII。默認轉換通常是可能的,但它們必須應用於平臺之間的每個單獨連接。如果不應用,則不可預知的數據結果可能(將)發生。