DB2 V9 z/os系统
背景:我有一个定义为(col1 int, col2 smallint, col3 int, col4 date)
的4列表
第1行的值为(1,123,456,2012年8月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;
错误为:
SQL 0408 N某个值与其赋值目标的数据类型不兼容。目标名为“col 3”。SQLSTATE=42821
我知道这个错误是由于试图将一个varchar插入一个整数。我还能做什么呢?我已经尝试使用各种CAST语句,但无法得到一个值插入到col 3中。我需要该值显示为如上所示的连接。
任何帮助都将不胜感激。
2条答案
按热度按时间ecr0jaav1#
将所有类型转换 Package 为最终的
cast( ... as integer)
应该可以:2izufjch2#
根据小整数的MAXIMUM值,可以将它们转换为以9为基数的整数,然后与“9”连接。
和另一个选项,也取决于你的小整数的MAXIMUM值,以填补左零其中之一。
查看完整代码和说明:https://mdb-blog.blogspot.com/2021/10/mysql-joincombine-2-smallinttinyint.html