CONCATENATION,smallint,整数到整数列

时间:2012-08-23 15:13:40

标签: db2 concatenation mainframe

DB2 V9 z / os

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

第1行的值为(1,123,456,2012-08-23)

执行以下操作时:

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

返回值123456,这正是我想要的。

执行以下操作时:

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的值。我需要将值显示为如上所示连接。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

将所有演员表包装为最终cast( ... as integer)应该有效:

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;