【问题标题】:Insert abnormal characters from a view to a table in db2 sql在db2 sql中将视图中的异常字符插入到表中
【发布时间】:2013-03-27 18:55:28
【问题描述】:

我使用的是 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 列是 ORGNNAMESHIPTONO。我想从viewinsert into table。 我使用的代码类似于:

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

【问题讨论】:

  • 有人可以尝试回答这个问题,这真的很重要

标签: sql view casting db2 type-conversion


【解决方案1】:

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

CAST( SHIPTONO AS VARCHAR (20) CCSID 65535 )

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

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多