Db2 将smallint、integer合并为整数列
DB2V9z/os 背景:我有一个4列表,定义为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
(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-很高兴这起作用。如果选中答案旁边的复选框,其他用户将知道问题已被回答。谢谢。我对这个网站还不熟悉,但仍在摸索。