0

我正在使用 DB2 i5/OS 版本。我salesview准备好了,看起来像这样:

    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。我想insert into tableview. 我使用的代码类似于:

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
4

1 回答 1

0

根据消息 SQL0420 给出的“恢复”,您需要将结果数据类型更改为CAST可以接受该值的类型。一个直接的例子可能是:

CAST( SHIPTONO AS VARCHAR (20) CCSID 65535 )

将 CCSID 65535 用于字符数据可能(或现在)是一个非常糟糕的主意。它使数据非常不可移植,并且随着未来事物的变化(例如,当定义发生变化或必须与其他平台(例如 PC)交换数据时)带来持续的问题。根据定义,它是没有编码且不会转换为其他编码(例如 EBCDIC<->ASCII)的二进制数据。默认转换通常是可能的,但它们必须应用于平台之间的每个单独的连接。如果不应用,可能(将)发生不可预测的数据结果。

于 2014-03-28T05:10:08.827 回答