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的值。我需要将值显示为如上所示连接。
任何帮助都将不胜感激。
答案 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;