Db2 将smallint、integer合并为整数列

Db2 将smallint、integer合并为整数列,db2,concatenation,mainframe,Db2,Concatenation,Mainframe,DB2V9z/os 背景:我有一个4列表,定义为(col1 int,col2 smallint,col3 int,col4 date) 第1行的值为(11234562012-08-23) 当我执行以下操作时: SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5)) FROM db.T1 WHERE col1 = 1; UPDATE db.table2 SET col3 = SELECT CAST(col2 A

DB2V9z/os

背景:我有一个4列表,定义为
(col1 int,col2 smallint,col3 int,col4 date)

第1行的值为(11234562012-08-23)

当我执行以下操作时:

SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5))
  FROM db.T1 
 WHERE col1 = 1;
UPDATE db.table2
   SET col3 = SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5))
  FROM db.T1 
 WHERE col1 = 1;
返回值123456,这正是我想要的

当我执行以下操作时:

SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5))
  FROM db.T1 
 WHERE col1 = 1;
UPDATE db.table2
   SET col3 = SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5))
  FROM db.T1 
 WHERE col1 = 1;
错误是:

SQL0408N值与其分配目标的数据类型不兼容。目标名称为“col3”。SQLSTATE=42821

我理解错误是由于试图将varchar插入整数。我还能做什么?我尝试过使用各种CAST语句,但无法获得要插入到col3中的值。我需要该值显示为已连接,如上图所示


任何帮助都将不胜感激。

将所有强制转换包装为最终的
强制转换(…作为整数)
应该可以:

UPDATE db.table2 
SET col3 = SELECT CAST(
        CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5)) 
    AS INTEGER)
FROM db.T1 
WHERE col1 = 1;

在提问时,您确实应该添加相关标签,以增加问题的可见性。任何人都不可能知道这是一个基于标签或标题的DB2问题。我必须问,你为什么要这样做?我必须通过连接B列和a列的值来更新a列。除了指出我对LittleBobbyTables用户名的喜爱之外,没有什么可以添加的,希望他/她能净化她/他的输入。@JohnMilton-很高兴这起作用。如果选中答案旁边的复选框,其他用户将知道问题已被回答。谢谢。我对这个网站还不熟悉,但仍在摸索。